移动手机中实现端文件上传的例子

input[type="file"] 可以选择手机里的文件,还可以调用拍照功能(某些浏览器不行),Form 表单如下:

 代码如下 复制代码
<form id="upload-form" action="/upload" enctype="multipart/form-data" method="post">
  <input id="selece-files" type="file" name="fileToUpload" />
  <input id="do-upload" type="submit" value="上传" />
</form>

这里做单文件上传,多文件上传可以给 input[type="file"] 加个 multiple 属性便可。当触发 submit 事件提交:

 代码如下 复制代码

var Upload = (function(win, upload) {

  upload.submit = function() {
    var self = this,
      form = document.getElementById('form'),
      formdata = new FormData(form),
      xhr = new XMLHttpRequest();

    // xhr.upload 在 iOS Safari、 大部分 Android 4.0+ 的自带浏览器、Chrome 都支持
    xhr.upload.addEventListener("progress", self.onProgress, false);
    xhr.addEventListener("load", self.onSuccess, false);
    xhr.addEventListener("error", self.onError, false);
    xhr.addEventListener("abort", self.onCancel, false);

    xhr.open('post', form.action, false);
    xhr.send(formdata);
  }

  // 可以在 onProgress 的时候处理进度条
  upload.onProgress = function(e) {
    if (e.lengthComputable) {
      var progress = Math.round(e.loaded * 100 / e.total) + '%';
      console.log('on progress: ', progress);
    }
  }

  upload.onError = function() {}
  upload.onCancel = function() {}

  // 上传完成
  upload.onSuccess = function() {}

  return upload;

})(window, window.Upload || {});
FormData,这是另一种针对 XHR2 设计的新数据类型。使用 FormData 能够很方便地实时以 JavaScript 创建 HTML <form>。

Server 端用了 formidable 这个中间件:npm install formidable。
当然不用 formidable 也能处理文件上传。

 代码如下 复制代码

var fs = require('fs'),
  formidable = require('formidable');

app.post('/upload', function(req, res) {
  var form = new formidable.IncomingForm(),
    data;

  // formidable 属性设置可以参考 github 上说明
  form.uploadDir = './uploads';
  form.encoding = 'utf-8';
  form.keepExtensions = true;
  form.maxFieldsSize = 1024 * 1024 * 50; // 50MB

  form.parse(req, function(err, fields, files) {
    console.log('on parse');
    res.writeHead(200, {'content-type': 'text/plain'});
    data = files.fileToUpload;
    res.end(JSON.stringify(data));
  });

  // 我们可以在文件上传完成后移到放置文件的目标目录
  form.on('end', function() {
    fs.renameSync(data.path, './uploads/'+ data.name);
  });
});

时间: 2024-10-26 19:35:54

移动手机中实现端文件上传的例子的相关文章

java中Spring MVC文件上传的例子

首先需要配置是加入两个 jar包: commons-fileupload-1.2.2.jar commons-io-2.1.jar 1.    文件配置 SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver来明确告诉DispatcherServlet如何处理MultipartRequest <bean id="multipartResolver" class="org.springframework

ASP.NET中常用的文件上传下载方法

asp.net|上传|下载     文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括:1.如何解决文件上传大小的限制2.以文件形式保存到服务器3.转换成二进制字节流保存到数据库以及下载方法4.上传Internet上的资源 第一部分:    首先我们来说一下如何解决ASP.NET中的文件上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大小限制为2M,一般情况下,我们可以采用更改WEB.Config文件来自定义最大文件大小,如下:<

急急急急急-在strurs2中怎么做文件上传的进度条

问题描述 在strurs2中怎么做文件上传的进度条 在工作中需要做文件上传,使用的技术是struts2和jsp 需要做进度条一直没找到解决办法希望哪位前辈做过给个思路 最好有源代码.

java 缩略图-Java中如何实现文件上传同时将文件首页生成缩略图保存

问题描述 Java中如何实现文件上传同时将文件首页生成缩略图保存 Java中如何实现文件上传同时将文件首页生成缩略图保存: 设想是在Java中模拟打印,将第一页获取生成图片,但是不知道怎么做 解决方案 什么叫文件首页?如果只是生产缩略图,java图像api直接搞定 解决方案二: 可否发下源码!!1976910941@qq.com 谢谢

java中struts2实现文件上传下载功能实例解析_java

本文实例讲述了java中struts2实现文件上传下载功能实现方法.分享给大家供大家参考.具体分析如下: 1.文件上传 首先是jsp页面的代码 在jsp页面中定义一个上传标签   复制代码 代码如下: <tr>      <td align="right" bgcolor="#F5F8F9"><b>附件:</b></td>      <td bgcolor="#FFFFFF">

php文件上传的例子及参数详解

 这篇文章主要介绍了php文件上传的例子及参数,有需要的朋友可以参考一下 1.上传表单 upload.html   程序代码 HTML     代码如下: <form enctype="multipart/form-data" action="upload.php" method="post">   <input type="hidden" name="max_file_size" val

多文件上传的例子_php基础

多文件上传的例子 //upload_html.php--------------------------------------------------------------------------------------------- <HTML> <HEAD> <TITLE>上传文件</TITLE> </HEAD> <script> function beforesubmit(forma) {    var indexnamea

多文件上传的例子

多文件上传的例子//upload_html.php--------------------------------------------------------------------------------------------- <HTML> <HEAD> <TITLE>上传文件</TITLE> </HEAD> <script> function beforesubmit(forma) {    var indexnamea=

asp.net中Fine Uploader文件上传组件使用介绍_实用技巧

最近在处理后台数据时需要实现文件上传.考虑到对浏览器适配上采用Fine Uploader. Fine Uploader 采用ajax方式实现对文件上传.同时在浏览器中直接支持文件拖拽[对浏览器版本有要求类似IE版本必须是9或是更高的IE10].在不同浏览器中提供统一用户体验.该组件基本覆盖目前所有主流浏览器.同时没有任何第三方组件依赖.相当Clear.在服务器端已经覆盖支持了ASP.NET/ColdFusion/Java/Node.js/Perl/PHP/Python. 对上传细节类似限制文件大