栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用AJAX,PHP和jQuery上传多个图像

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用AJAX,PHP和jQuery上传多个图像

尝试利用

json
上传,处理
file
对象

html

<div id="drop" >  <div >Drop image here</div></div><br /><form id="upload">  <input type="file" name="file" id="file" multiple="true" accepts="image/*" />  <ul  id="uploads">    <!-- The file uploads will be shown here -->  </ul></form><div id="listTable"></div>

CSS

  #uploads {      display:block;      position:relative;  }  #uploads li {      list-style:none;  }  #drop {      width: 90%;      height: 100px;      padding: 0.5em;      float: left;      margin: 10px;      border: 8px dotted grey;  }  #drop.hover {      border: 8px dotted green;  }  #drop.err {      border: 8px dotted orangered;  }

js

var display = $("#uploads"); // cache `#uploads`, `this` at `$.ajax()`var droppable = $("#drop")[0]; // cache `#drop` selector$.ajaxSetup({    context: display,    contentType: "application/json",    dataType: "json",    beforeSend: function (jqxhr, settings) {        // pre-process `file`        var file = JSON.parse(        depreURIComponent(settings.data.split(/=/)[1])        );        // add `progress` element for each `file`        var progress = $("<progress />", {     "class": "file-" + (!!$("progress").length    ? $("progress").length    : "0"),     "min": 0,     "max": 0,     "value": 0,     "data-name": file.name        });        this.append(progress, file.name + "<br />");        jqxhr.name = progress.attr("class");     }});var processFiles = function processFiles(event) {    event.preventDefault();    // process `input[type=file]`, `droppable` `file`    var files = event.target.files || event.dataTransfer.files;    var images = $.map(files, function (file, i) {        var reader = new FileReader();        var dfd = new $.Deferred();        reader.onload = function (e) { dfd.resolveWith(file, [e.target.result])        };        reader.readAsDataURL(new Blob([file], { "type": file.type        }));        return dfd.then(function (data) { return $.ajax({     type: "POST",     url: "/echo/json/",     data: {         "file": JSON.stringify({      "file": data,      "name": this.name,      "size": this.size,      "type": this.type         })     },     xhr: function () {         // do `progress` event stuff         var uploads = this.context;         var progress = this.context.find("progress:last");         var xhrUpload = $.ajaxSettings.xhr();         if (xhrUpload.upload) {  xhrUpload.upload.onprogress = function (evt) {      progress.attr({   "max": evt.total,   "value": evt.loaded      })  };  xhrUpload.upload.onloadend = function (evt) {      var progressData = progress.eq(-1);      console.log(progressData.data("name")   + " upload complete...");      var img = new Image;      $(img).addClass(progressData.eq(-1)      .attr("class"));      img.onload = function () {          if (this.complete) { console.log(     progressData.data("name")     + " preview loading..." );          };      };  uploads.append("<br /><li>", img, "</li><br />");  };         }         return xhrUpload;     } }) .then(function (data, textStatus, jqxhr) {     console.log(data)     this.find("img[]")     .attr("src", data.file)     .before("<span>" + data.name + "</span><br />");     return data }, function (jqxhr, textStatus, errorThrown) {     console.log(errorThrown);     return errorThrown });        })    });    $.when.apply(display, images).then(function () {        var result = $.makeArray(arguments);        console.log(result.length, "uploads complete");    }, function err(jqxhr, textStatus, errorThrown) {        console.log(jqxhr, textStatus, errorThrown)    })};$(document).on("change", "input[name^=file]", processFiles);// process `droppable` eventsdroppable.ondragover = function () {    $(this).addClass("hover");    return false;};droppable.ondragend = function () {    $(this).removeClass("hover")    return false;};droppable.ondrop = function (e) {    $(this).removeClass("hover");    var image = Array.prototype.slice.call(e.dataTransfer.files)        .every(function (img, i) {        return /^image/.test(img.type)    });    e.preventDefault();    // if `file`, file type `image` , process `file`    if (!!e.dataTransfer.files.length && image) { $(this).find(".drop-area-label") .css("color", "blue") .html(function (i, html) { $(this).delay(3000, "msg").queue("msg", function () {     $(this).css("color", "initial").html(html) }).dequeue("msg"); return "File dropped, processing file upload...";        });        processFiles(e);    } else { // if dropped `file` _not_ `image` $(this) .removeClass("hover") .addClass("err") .find(".drop-area-label") .css("color", "darkred") .html(function (i, html) { $(this).delay(3000, "msg").queue("msg", function () {     $(this).css("color", "initial").html(html)     .parent("#drop").removeClass("err") }).dequeue("msg"); return "Please drop image file...";        });    };};

PHP

<?php  if (isset($_POST["file"])) {    // do php stuff    // call `json_enpre` on `file` object    $file = json_enpre($_POST["file"]);    // return `file` as `json` string    echo $file;  };


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432203.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号