h5移动端实现图片文件上传

时间: 2017-12-06阅读: 752标签: 文件

PC端上传文件多半用插件,引入flash都没关系,但是移动端要是还用各种冗余的插件估计得被喷死,项目里面需要做图片上传的功能,既然H5已经有相关的接口且兼容性良好,当然优先考虑用H5来实现。


JS代码:

<script type="text/javascript">
        function fileSelected() {
            var file = document.getElementById('fileToUpload').files[0];
            if (file) {
                var fileSize = 0;
                if (file.size > 1024 * 1024)
                    fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
                else
                    fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
 
                document.getElementById('fileName').innerHTML = 'Name: ' + file.name;
                document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize;
                document.getElementById('fileType').innerHTML = 'Type: ' + file.type;
            }
        }
 
        function uploadFile() {
            var fd = new FormData();
            fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);
            var xhr = new XMLHttpRequest();
            xhr.upload.addEventListener("progress", uploadProgress, false);
            xhr.addEventListener("load", uploadComplete, false);
            xhr.addEventListener("error", uploadFailed, false);
            xhr.addEventListener("abort", uploadCanceled, false);
            xhr.open("POST", "/Home/Upload");
            xhr.send(fd);
        }
 
        function uploadProgress(evt) {
            if (evt.lengthComputable) {
                var percentComplete = Math.round(evt.loaded * 100 / evt.total);
                document.getElementById('progressNumber').innerHTML = percentComplete.toString() + '%';
            }
            else {
                document.getElementById('progressNumber').innerHTML = 'unable to compute';
            }
        }
 
        function uploadComplete(evt) {
            /* This event is raised when the server send back a response */
            alert(evt.target.responseText);
        }
 
        function uploadFailed(evt) {
            alert("There was an error attempting to upload the file.");
        }
 
        function uploadCanceled(evt) {
            alert("The upload has been canceled by the user or the browser dropped the connection.");
        }
    </script>


Html代码:

<h1>单文件上传</h1>
  <form id="form1" enctype="multipart/form-data" method="post" action="/Home/Upload">
    <div class="row">
      <label for="fileToUpload">Select a File to Upload</label><br />
      <input type="file" name="fileToUpload" id="fileToUpload" onchange="fileSelected();"/>
    </div>
    <div id="fileName"></div>
    <div id="fileSize"></div>
    <div id="fileType"></div>
    <div class="row">
      <input type="button" onclick="uploadFile()" value="Upload" />
    </div>
    <div id="progressNumber"></div>
  </form>


后端代码:

public ActionResult Upload() {
    HttpPostedFileBase file = Request.Files["fileToUpload"];
    file.SaveAs(Server.MapPath("/upload/")+file.FileName);
    return Content(file.FileName+"上传成功!");
}


将数组转化为 csv 文件类型的代码

将一个数组转化为逗号为分割符的字符串(CSV)即表格数据。利用了 Array.prototype.map() 和 Array.prototype.join() 两个函数,实现了一个简单的数组转化为 csv 文件类型的代码。

JavaScript使用localStorage缓存Js和css文件

对于WebApp来说,将js css文件缓存到localstorage区可以减少页面在加载时与HTTP请求的交互次数,从而优化页面的加载时间.特别是当移端信号不好高延迟时优化效果还是很显见的

php使用 header 头下载文件

header() 函数向客户端发送原始的 HTTP 报头。认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数

PHP遍历目录和文件及子目录和文件

正常直接使用opendir方法,就可以读到所有的目录和文件。文件可以直接记录下来,目录则需要再进一步获取里边的文件信息。也就是,如果当前读出来是目录,则需要再次调用函数本身(递归)

上传文件异常问题_413 Request Entity Too Large的解决方法

对于有经验的开发着看见这个错误第一反应就是服务器的上传大小设置的不对那么修改服务器上传大小。对于nginx的配置有三个地方可以设置.解决413的正常途径.分别是 http,server,location 根据实际情况设置具体的大小

js实现带上传进度的文件上传

获取文件筐的文件集合,创建FormData对象 相当于参数集合 存储方式是键值对,添加第一个文件到FormData,添加普通数据 后台直接参数接受,创建异步对象

php实现rar文件的读取和解压

PHP Rar Archiving 模块 (php_rar) 是一个读取和解压rar文件的模块,但不提供RAR压缩(打包)的功能。首先要到PECL的RAR页面下载DLL. 根据自己的情况选择下载对应版本的DLL.

PHP上传文件到阿里云OSS,nginx代理访问

阿里云OSS创建存储空间Bucket(读写权限为:公共读),拿到相关配置创建 oss.php 上传类 (基于thinkPHP5),访问 oss域名地址 不可在浏览器直接访问 可用nginx 代理

使用HttpClient发送文件流到服务器端

适用场景: 网络绝对路径的URL文件或图片,不存储到本地,转换成stream,直接使用HTTPClient传送到SpringBoot的服务端,将文件存储下来,并返回一个文件地址。目前分层架构的系统越来越多这种需求,所以记录下来以备不时之需。

解决nginx和php使用ckfinder无法上传大文件的问题

cms内容发布系统上传不了大文件,当上传超过32M文件时就上传不了,提示:无效的文件. 文件尺寸太大。分析文件上传过程:browser --> nginx --> php ,需要修改 nginx.conf和php.ini

fly63.com版权所有,内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权,请与小编联系!情况属实本人将予以删除!

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录