Aws pre-signed URLs 上传文件,带进度显示

注意:YourUrl,就是获取 pre-signed URLs的地址

<input type="file" id="selector" multiple>
<button onclick="upload()">Upload</button>

<div id="status">No uploads</div>

<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">

 function upload() {
   [$(‘#selector‘)[0].files].forEach(fileObj => {
     var file = fileObj[0]
     // 从服务器获取一个URL
     retrieveNewURL(file, url => {
       // 上传文件到服务器
       uploadFile(file, url)
     })
   })
 }

 // 发请求到Node.js server获取上传URL。
 function retrieveNewURL(file, cb) {
   $.get(`YourUrl?name=${file.name}`, (url) => {
     cb(url)
   })
 }

 // 使用XMLHttpRequest来上传文件到S3。
 function uploadFile(file, url) {
     var xhr = new XMLHttpRequest ()

     // 加载进度条
     xhr.upload.onprogress = function (e) {
         // For uploads
         if (e.lengthComputable) {
             console.log(e.loaded / e.total);
             $(‘#status‘).text(‘上传进度:‘ + ((e.loaded / e.total)*100).toFixed(2) + ‘%‘);
         }
     };
     xhr.open(‘PUT‘, url, true)
     xhr.send(file)

     xhr.onload = () => {
       if (xhr.status == 200) {
         $(‘#status‘).text(`${file.name} 上传成功。`)
       }
     }
 }

</script>

原文地址:https://www.cnblogs.com/codeaaa/p/10594233.html

时间: 2024-11-08 22:53:38

Aws pre-signed URLs 上传文件,带进度显示的相关文章

不带插件 ,自己写js,实现批量上传文件及进度显示

今天接受项目中要完成文件批量上传文件而且还要显示上传进度,一开始觉得这个应该不是很麻烦,当我在做的时候遇到了很多问题,很头疼啊. 不过看了别人写的代码,自己也测试过,发现网上好多都存在一些问题,并不是自己想要的.然后自己查阅各种资料,经过自己总结,最终完成了这个功能. 如果大家有什么问题可以提出来,一起交流,学习.有什么不对的地方也指出来,我也虚心学习.自己也是刚写博客,您们的赞是我写博客的动力,谢谢大家. 条件:我采用struts2,java ,ajax,FormData实现; 1.实现的逻辑

Extjs 使用fileupload插件上传文件 带进度条显示

一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提交的同时执行实际的文件上传. 因为没有安全的跨浏览器以编程的方式对file表单项设值的方式, 所以标准表单项的 setValue 方法是无效的. getvalue方法的返回值取决于使用何种浏览器; 一些仅仅返回文件名, 一些返回一个完整的文件路径, 一些则返回文件的虚拟路径. 二.在我看来这个插件就

asp.net mvc 实现上传文件带进度条

思路:ajax异步上传文件,且开始上传文件的时候启动轮询来实时获取文件上传进度.保存进度我采用的是memcached缓存,因为项目其他地方也用了的,所以就直接用这个啦.注意:不能使用session来保存进度,因为session是线程安全的不能实时获取进度,可是试试httpcache或者memorycache,这两个我没有试过,请自行尝试. ps:使用websocket来实现也是不错的,不过我没有试过,有心的大神可以去试试. 下面贴一张效果图: 前端ajax上传文件,我使用了两种jq插件.一种是a

ajax上传文件及进度显示

之前在博文:原生ajax写法就提及过ajax2.0与1.0的差别是多了FormData和利用FormData文件上传(当然还有跨域,但不是本文的重点). 那么具体怎么样实现ajax上传文件呢? 一般来说,浏览器获取文件的方法有拖拽和input_file两种: // 先定义一个放文件的数组 var files = []; //拖拽事件获取文件 div.addEventListener('drop',function(ev){ //因为dataTransfer.files只是类数组,所以要用Arra

ajax上传文件带进度条的思路

首先,需要2个重要的数据,total(文件总大小)和loaded(已经上传的大小),用 loaded/total,然后不断的更新进度条即可: 问:怎么拿到这两个重要数据呢? 答:在html5中有一个上传过程事件onprogress,在这个事件中可以读到这两个数据loaded和total:上传的时候不断的触发这个函数,然后更新进度条即可: 1 xhr.upload.onprogress = function(ev){ 2 if(ev.lengthComputable){ 3 //有可能文件时分块上

js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '&qu

asp.net 文件批量选取,批量上传,带进度条,uploadify3.2 TOP

http://www.16aspx.com/Article/3444 asp.net 文件批量选取,批量上传,带进度条,uploadify3.2 TOP,布布扣,bubuko.com

servlet多文件上传(带进度条)

需要commons-fileupload-1.3.jar和commons-io-2.4.jar的支持 页面效果:(图片文件都可以) (1)进度标识类 public class UploadStatus { private long bytesRead; private long contentLength; private int items; private long startTime = System.currentTimeMillis(); //set get 方法 省略 } (2)监听

EXTJS+ASP.NET上传文件带实时进度条代码

一,文件夹 二,upLoad.cs是继承IHttpModule的类: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Text; using System.IO; using System.Reflection; using System.Globalization; using System.Web.Hosting; /// <summary>