实例讲解javascript实现异步图片上传方法

我们首先看下HTML代码实现的form提交部分。其中大家在测试的时候需要把test的URL更换成自己的,也可以直接写一个本地地址测试。

html代码:

<form id="uploadForm" action="http://storage.test.com/file/upload" method="post" enctype="multipart/form-data">
  <input type="hidden" name="key" id="key" value="VTZ18HM64#D_L3WX" />
  <input type="file" name="uploadFiles" value="" id="fileImage" multiple='multiple' />
  <div class="upload_submit">
  <button type="button" id="fileSubmit" class="upload_btn">保存</button>
  </div>
</form>

js代码:

var Fileupload = {
  fileInput: $("#fileImage").get(0),
  dragDrop: $("#fileDragArea").get(0),
  upButton: $("#fileSubmit").get(0),
  url: $("#uploadForm").attr("action"),
  })(),
  //文件上传
  funUploadFile: function() {
   var self = this;
   for (var i = 0, file; file = this.fileFilter[i]; i++) {
    (function(file) {
     var xhr = new XMLHttpRequest();
     if (xhr.upload) {
      // 上传中
      xhr.upload.addEventListener("progress", function(e) {
       self.onProgress(file, e.loaded, e.total);
      }, false);
      // 文件上传成功或是失败
      xhr.onreadystatechange = function(e) {

      if (xhr.readyState == 4) {
        if (xhr.status == 200) {
         self.onSuccess(JSON.parse(xhr.responseText));
         self.funDeleteFile(file);
         if (!self.fileFilter.length) {
          //全部完毕
          self.onComplete();
         }
        } else {
         self.onFailure(file, xhr.responseText);
        }
       }
      };
      //准备FormData对象
      var myForm = document.getElementById('uploadForm');
      //将文件放入FormData对象中
      formData = new FormData(myForm);

      // 开始上传
      xhr.open("POST", self.url, true);
      xhr.send(formData);
     }
    })(file);
   }
  },
  init: function() {
   var self = this;
   //上传按钮提交
   if (this.upButton) {
    console.log('提示: 当前存储服务器地址', this.url)
    this.upButton.addEventListener("click", function(e) {
     self.funUploadFile(e);
    }, false);
   }
   self.bindEvent();
  }
 };
 Fileupload = $.extend(Fileupload);
 Fileupload.init();

FormData 异步上传文件

<input type="file" id="file">

一、创建FormData放入待上传文件

//准备FormData对象
var formData = new FormData(),
 uploadFile = document.getElementById('file');

//将文件放入FormData对象中
formData.append('file', uploadFile.files[0]);

二、通过xhr发送FormData数据到服务器,实现文件上传

//创建xhr对象
var xhr = new XMLHttpRequest();

//监听文件上传进度
xhr.upload.onprogress = function(evt){
 //lengthComputabel: 文件长度是否可计算
 if(evt.lengthComputable){
  //evt.loaded: 已下载的字节数
  //evt.total: 文件总字节数
  var percent = Math.round(evt.loaded*100/evt.total);
  console.log(percent);
 }
}

//监听文件传输开始
xhr.onloadstart = function(evt){
  xhr.abort() //终止上传
}

//监听ajax成功完成事件
xhr.onload = function(evt){
 ...
}

//监听ajax错误事件
xhr.onerror = function(evt){
 ...
}

//监听ajax被中止事件
xhr.onabort = function(evt){
 ...
}

//监听传输结束事件: 不管成功或者失败都会触发
xhr.onloaded = function(evt){
 ...
}

//*发起ajax请求数据
xhr.open('POST', '/url', true);
xhr.send(formData);
(0)

相关推荐

  • ajax图片上传,图片异步上传,更新实例

    最近在研究ajax图片上传,图片异步上传,更新,留作参考. 直接上源码吧: js源码: /// <reference path="jquery-1.8.3.js" /> /// <reference path="ajaxForm/jquery.form.js" /> /*! * jQuery upload * 用于上传单个文件,上传成功后,返回文件路径. * 本插件依赖jQuery,jquery.form 请在使用时引入依赖的文件 * * D

  • thinkphp ajaxfileupload实现异步上传图片的示例

    thinkphp开发图片上传,图片异步上传是目前比较方便的功能,这里我就不写css文件了,将代码写出来.引入核心文件下载https://github.com/carlcarl/A... HTML 下面首先在html页面引入相关js资源 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片上传</title>

  • JavaScript异步上传图片文件的实例代码

    html: <form action="url" enctype="multipart/form-data" id="myform" method="post"> <input accept="image/*" id="addfile" type="file" /> </form> jquery: $("#addfile&

  • Jquery插件之多图片异步上传

    1.初始化上传控件数量. 复制代码 代码如下: $(document).ready(function() { $('#H_File').uploadFile({ key: 'test',count:3 }); }); 以前的设计思想是,初始化上传控件数量,页面显示为1个上传控件,每当上传成功后,在下面创建一个上传控件. 2.上传图片成功后 这就是最终的效果,如果您有更好的插件,希望一起开源. 其他的就不多说了,如果您感兴趣,点击下载源码 /201010/yuanma/jquery_aspnet_

  • jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码

    (jsp需要引入 :jquery-1.9.0.js.jquery.form.js ) ,jsp页面使用的是bootstrap制作的,看不懂的标签不用管,form表单大同小异.代码比较简陋,只是为了演示使用ajaxSubmit异步上传图片及保存数据,请海含! (参考文献:http://www.jb51.net/shouce/jquery/jquery_api/Plugins/Form/ajaxSubmit.html) 一:web (add.jsp) 复制代码 代码如下: <%@page impor

  • JS实现异步上传压缩图片

    摘要: 使用iframe来处理异步上传图片,在现在这个时代来说,多多少少都有点落后了!单单就凭AJAX和JS就不能做到异步上传图片了吗? 感谢 think2011 这位兄台的JS库:https://github.com/think2011/LocalResizeIMG 先看调用页面: <!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewp

  • php+ajax实现异步上传文件或图片功能

    本文为大家分享了ajax异步上传文件或图片功能的具体代码,供大家参考,具体内容如下 //html代码 <form enctype="multipart/form-data" id="upForm"> <input type="file" name="file" ><br><br> <input type="button" value="提交&q

  • java webApp异步上传图片实现代码

    如何实现java webApp异步上传图片,先了解以下几个问题: 1.图片上传: 2.图片上传预览: 3.上传图片更改地址异步添加到数据库: 主要内容 本示例主要采用纯HTML前端和JavaScript代码作工具,查询有关demo其实现图片上传的代码范例如下: (1)点击上传图片的div代码: <div id="div1" class="photo"> <input type="file" id="choose&quo

  • java异步上传图片示例

    复制代码 代码如下: final File imageFile = new File(getCacheDir().getPath() + "/img/" + p.image); image.setVisibility(View.GONE); view.findViewById(R.id.imageLoading).setVisibility(View.VISIBLE); (new AsyncTask<Void, Void, Bitmap>() {     @Override

  • asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)

    本文实例讲述了asp.net+jquery.form实现图片异步上传的方法.分享给大家供大家参考,具体如下: 首先我们需要做准备工作: jquery 点击此处本站下载. jquery.form.js 点击此处本站下载. 页面JqueryFormTest.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="JqueryFormTest.aspx.cs" Inherits=

  • Android异步上传图片到PHP服务器

    原理 Android客户端模拟一个HTTP的Post请求到服务器端,服务器端接收相应的Post请求后,返回响应信息给给客户端. 背景 网上很多上传到java服务器上的,找了好久,找到了上传到php的了,思路跟我当初想的差不多,就是POST过去.废话不多说,直接上图看代码. php代码 <?php $target_path = "./upload/";//接收文件目录 $target_path = $target_path . basename( $_FILES['uploaded

随机推荐