在网速慢的情况下解决文件上传慢造成用户体验差的问题,我这里实践的方案有三种:
- 前端使用ajax 的方式异步把文件上传到服务端,然后服务端再对文件读写进行异步IO. 比如可以使用queue or asyc job or schedual,这样前端能有较快的响应。
- 前端使用js对文件进行encode转码,把文件转成字符进行提交,后端在进行decode and IO. 这种方式比如使用base64, 但是base64 encode to string 可能有时候字符串会比较长,可能会超过一些应用服务器的IO大小设置。
- 最近发现第三种方式可以更好的体验:plupload, http://www.plupload.com/,这是使用flash or sliverlight和HTML5特性做的上传插件,实质还是对文档进行了转码处理
- 在不考虑浏览器兼容性的情况下,还可以使用html5的file readAsArrayBuffer or 使用Btoa
js encode file code :
<div> <div> <label for="filePicker">Choose or drag a file:</label><br> <input type="file" id="filePicker"> </div> <br> <div> <h1>Base64 encoded version</h1> <textarea id="base64textarea" placeholder="Base64 will appear here" cols="50" rows="15"></textarea> </div> </div> <script> var handleFileSelect = function(evt) { var files = evt.target.files; var file = files[0]; if (files && file) { var reader = new FileReader(); reader.onload = function(readerEvt) { var binaryString = readerEvt.target.result; document.getElementById("base64textarea").value = btoa(binaryString); }; reader.readAsBinaryString(file); } }; if (window.File && window.FileReader && window.FileList && window.Blob) { document.getElementById('filePicker').addEventListener('change', handleFileSelect, false); } else { alert('The File APIs are not fully supported in this browser.'); } </script> rel:http://jsfiddle.net/eliseosoto/JHQnk/ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding 另外,参考代码:
$(document).ready(function($) { $.extend( true, jQuery.fn, { imagePreview: function( options ){ var defaults = {}; if( options ){ $.extend( true, defaults, options ); } $.each( this, function(){ var $this = $( this ); $this.bind( 'change', function( evt ){ var files = evt.target.files; // FileList object // Loop through the FileList and render image files as thumbnails. for (var i = 0, f; f = files[i]; i++) { // Only process image files. if (!f.type.match('image.*')) { continue; } var reader = new FileReader(); // Closure to capture the file information. reader.onload = (function(theFile) { return function(e) { // Render thumbnail. $('#imageURL').attr('src',e.target.result); }; })(f); // Read in the image file as a data URL. reader.readAsDataURL(f); } }); }); } }); $( '#fileinput' ).imagePreview(); });
以上方案,仅供参考,欢迎讨论
相关推荐
在JavaScript(简称js)中实现文件上传功能是Web开发中的常见需求,特别是在现代网页应用中,用户可能需要上传图片、文档等数据。本教程将详细讲解如何利用js实现这一功能,以及涉及到的关键技术和库。 首先,`js...
在JavaScript的世界里,实现文件上传功能是一个常见的需求,尤其是在现代Web应用中。传统的文件上传通常依赖于Flash技术,但随着HTML5的普及,JavaScript已经能够提供原生的、无插件的文件上传解决方案。本教程将...
"模仿163js多文件上传"是一个旨在实现类似网易163邮箱的多文件上传功能的JavaScript解决方案,它支持与服务器端如ASP、JSP、PHP等技术的交互,为用户提供便捷的批量上传体验。 首先,我们来详细解释这个功能的核心...
"IE 6文件上传慢终极解决方案"这个标题暗示了一个常见问题,即在使用IE6进行文件上传时,用户可能会遇到速度极慢的情况。这个问题可能是由于多种因素引起的,包括浏览器本身的技术限制、HTTP协议的处理方式以及...
在【压缩包子文件的文件名称列表】中,"JSUpBigFile"可能是项目中的主要文件或者是一个包含JavaScript文件上传实现的文件夹。这个文件或文件夹可能包含了以下关键组件: 1. **前端部分**: - `JSUpBigFile.js`:主...
JavaScript多文件上传是一种常见的Web开发功能,允许用户一次性选择并上传多个文件到服务器。这个功能在现代网页应用中尤其重要,比如社交媒体平台、云存储服务和文件协作工具等。在这个场景下,JavaScript作为...
标题与描述概述的知识点主要涉及使用JavaScript进行文件上传的技术,特别是如何通过JS上传单个文件,并且用户可以自定义文件的大小限制。这涉及到前端开发中的文件读取、网络请求以及进度监控等技术细节。 ### JS...
在这个场景中,"js 多文件上传组件"是指一种能够允许用户一次性选择并上传多个文件的前端解决方案。 多文件上传组件的实现主要包括以下几个关键点: 1. **HTML5 File API**:HTML5引入了File API,使得JavaScript...
插件在JavaScript文件上传中扮演着关键角色,它们通常会提供更丰富的功能和友好的用户界面。在这个主题中,我们提到了几个知名的jQuery插件: 1. **jquery.form.js**:这是一个非常流行的jQuery插件,它可以方便地...
JavaScript(简称JS)是一种轻量级的解释型编程语言,广泛应用于网页和网络应用开发,包括文件上传功能。Uploadify是一款流行的JS插件,它使得文件上传变得更加简单、直观,支持批量上传,提供了丰富的自定义选项,...
在现代Web开发中,JavaScript和HTML5的结合为我们提供了丰富的功能,其中之一就是多文件上传。...通过这个项目,开发者可以学习到如何构建一个功能完善的文件上传系统,提升用户在Web应用中的文件交互体验。
总之,这个"多文件上传封装好的javascript文件类"为Web开发提供了一种高效且易于集成的多文件上传解决方案,简化了开发过程,并提高了用户体验。理解和熟练使用此类,可以帮助开发者更便捷地处理文件上传这一常见的...
为了实现这个功能,我们还需要考虑一些额外的点,如错误处理、断点续传(如果用户中断上传,下次可以从中断的地方继续)、文件的MD5校验(确保上传的文件完整无误)以及安全措施(防止恶意文件上传)。在PHP中,可以...
本项目利用JavaScript(简称JS)作为前端处理,JavaServer Pages(简称JSP)作为后端处理,实现了文件上传的功能。通过这个项目,我们可以深入理解JS和JSP在文件上传过程中的角色和交互。 **前端部分 - JavaScript*...
在IT行业中,前端开发是构建Web应用程序不可或缺的一部分,而文件上传功能则是许多网站和应用的基本需求,特别是涉及到图片上传的情况。"上传文件demo"这个项目就是针对这一需求的一个实例,它展示了如何在前端实现...
为了提供更好的用户体验,开发者通常会采用AJAX(Asynchronous JavaScript and XML)技术实现异步文件上传,避免传统方式下页面刷新带来的中断感。AJAX允许在后台与服务器进行通信,而无需刷新整个页面。本篇文章将...
JavaScript实现的多文件上传是一种常见的前端技术,它允许用户一次性选择并上传多个文件,提高了用户在网站上的交互体验。在本项目中,开发者利用JavaScript的File API和其他相关技术创建了一个功能强大且样式美观的...
在JavaScript中实现文件上传进度条是一项重要的用户交互优化工作,它可以显著提升用户体验,尤其是在处理大文件上传时。本文将深入探讨如何实现这一功能,主要涉及以下几个关键知识点: 1. **进度条的实现**:...
easyUpload.js是一款轻量级的JavaScript库,专门针对文件上传场景设计,它简化了上传流程,提高了用户体验,并提供了丰富的自定义选项。本文将深入探讨easyUpload.js的核心特性、工作原理以及如何在项目中有效集成和...