使用 AJAX、PHP 和 jQuery 上传多个图像
如果您不熟悉的话,使用 AJAX 上传多个图像可能会很困难。过程。本文将引导您完成所涉及的步骤,重点介绍 HTML、jQuery/AJAX 和 PHP 代码的关键组件。我们还将提供一个工作代码示例来说明解决方案。
HTML
HTML 代码定义用户可以选择多个图像进行上传的表单。它包含一个具有 multiple 属性的输入字段,允许用户一次选择多个图像。我们还将为每个文件添加一个进度条以指示上传状态。
<form>
jQuery/AJAX
jQuery/AJAX 代码处理文件上传过程。当用户选择文件时,我们使用更改事件来触发上传。然后,我们迭代每个选定的文件,为每个文件创建一个新的进度条。
$(document).on("change", "input[name^='file']", function(e){ e.preventDefault(); var This = this, display = $("#uploads"); // list all file data $.each(This.files, function(i, obj){ // for each image run script asynchronous (function(i) { // get data from input file var file = This.files[i], name = file.name, size = file.size, type = file.type, lastModified = file.lastModified, lastModifiedDate = file.lastModifiedDate, webkitRelativePath = file.webkitRelativePath, //slice = file.slice, i = i; // DEBUG /* var acc = [] $.each(file, function(index, value) { acc.push(index + ": " + value); }); alert(JSON.stringify(acc)); */ $.ajax({ url:'/ajax/upload.php', contentType: "multipart/form-data", data:{ "image": { "name":name, "size":size, "type":type, "lastModified":lastModified, "lastModifiedDate":lastModifiedDate, "webkitRelativePath":webkitRelativePath, //"slice":slice, } }, type: "POST", // Custom XMLHttpRequest xhr: function() { var myXhr = $.ajaxSettings.xhr(); // Check if upload property exists if(myXhr.upload) { // For handling the progress of the upload myXhr.upload.addEventListener("progress",progressHandlingFunction, false); } return myXhr; }, cache: false, success : function(data){ // load ajax data $("#listTable").append(data); } }); // display progress function progressHandlingFunction(e){ if(e.lengthComputable){ var perc = Math.round((e.loaded / e.total)*100); perc = ( (perc >= 100) ? 100 : ( (perc <= 0) ? 0 : 0 ) ); $("#progress"+i+" > div") .attr({"aria-valuenow":perc}) .css("width", perc+"%"); } } // display list of files display.append('<li>'+name+'</li><div class="progress">
PHP
最后,PHP 代码处理文件上传服务器端。它接收上传的文件并进行处理。
<?php if (isset($_POST["image"])) { // do php stuff // call `json_encode` on `file` object $file = json_encode($_POST["file"]); // return `file` as `json` string echo $file; } ?>
结论
结合这些组件,我们可以使用 AJAX、PHP 和 jQuery 实现多图片上传。此功能允许用户方便地一次上传多张图片,增强用户体验并简化文件上传过程。
以上是如何使用 AJAX、PHP 和 jQuery 上传多个图像?的详细内容。更多信息请关注PHP中文网其他相关文章!