Web Uploader是百度提供的。

1:下载:http://fex.baidu.com/webuploader/(官方下载/示例)

2:使用Web Uploader文件上传需要引入三种资源:JS, CSS, SWF。

///src值根据文件在项目中的位置而定

<link href="~/Content/webuploader/webuploader.css" rel="stylesheet" />

<script src="~/Content/webuploader/webuploader.js"></script>

<!--SWF在初始化的时候指定,在后面将展示-->

3、html部分:

    <div id="uploadWindow" class="container-fluid">
<div class="windowTop" style="border-bottom:1px solid #808080;">
<div id="filePicker" style="width:50%;float:left;padding:5px 3px;">
选择文件
</div>
<button id="ctlBtn" class="button-upload">开始上传</button>
<button id="closeUploadWindow" class="button-upload cl">关闭</button>
</div>
<div class="windowCenter">文件上传示例:</div>
<div class="windowBottom">
<div id="selectedFiles" class="wu-example">
<!--用来存放文件信息-->
<div id="fileList" class="uploader-list"></div>
</div>
</div>
</div>

 4、js部分

var applicationPath = window.applicationPath === "" ? "" : window.applicationPath || "../../";
  
// 上传初始化
function initUpload() {
//文件上传
var $ = jQuery,
$list = $('#fileList'),
$btn = $('#ctlBtn'),
state = 'pending',
uploader;
uploader = WebUploader.create({
auto: false,// 选完文件后,是否自动上传。
// 不压缩image
resize: false,
// swf文件路径
swf: applicationPath + '~/Content/webuploader/Uploader.swf',
// 文件接收服务端。
server: '/Home/UploadFiles', // 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: '#filePicker',
//accept: {
// title: "RFA",
// extensions: "rfa",
// mimeTypes: ".rfa,application/octet-stream",
//},
chunked: true,// 开起分片上传。
threads: 1, // 上传并发数。允许同时最大上传进程数。
method: 'POST', // 文件上传方式,POST或者GET。
//fileSizeLimit: 1024 * 1024 * 100 * 100, //验证文件总大小是否超出限制, 超出则不允许加入队列。
//fileSingleSizeLimit: 1024 * 1024 * 100, //验证单个文件大小是否超出限制, 超出则不允许加入队列。
//fileVal: 'upload', // [默认值:'file'] 设置文件上传域的name。
}); // 当有文件添加进来的时候
uploader.on('fileQueued', function (file) {
$list.append('<div id="' + file.id + '" class="item">' +
'<h4 class="info">' + file.name + '</h4>' +
'<p class="state">等待上传...</p>' +
'</div>');
}); // 文件上传过程中创建进度条实时显示。
uploader.on('uploadProgress', function (file, percentage) {
var $li = $('#' + file.id),
$percent = $li.find('.progress .progress-bar');
// 避免重复创建
if (!$percent.length) {
$percent = $('<div class="progress progress-striped active">' +
'<div class="progress-bar" role="progressbar" style="width: 0%">' +
'</div>' +
'</div>').appendTo($li).find('.progress-bar');
} $li.find('p.state').text('上传中'); $percent.css('width', percentage * 100 + '%');
}); uploader.on('uploadSuccess', function (file, response) {
$('#' + file.id).find('p.state').text(response.info);
// fileurl = response.data; //上传文件的路径
//
}); uploader.on('uploadError', function (file, response) {
debugger
$('#' + file.id).find('p.state').text('上传出错 ' + response);
}); uploader.on('uploadComplete', function (file, response) {
$('#' + file.id).find('.progress').fadeOut(); });
//当所有文件上传完成时触发
uploader.on('uploadFinished', function () {
这里是一个异步回调函数,对文件的一个处理。后台通过单独开一个线程进行处理。详情看多线程分类里相关文档里
// webuploaderCallBack();
}); uploader.on('all', function (type) {
if (type === 'startUpload') {
state = 'uploading';
} else if (type === 'stopUpload') {
state = 'paused';
} else if (type === 'uploadFinished') {
state = 'done';
} if (state === 'uploading') {
$btn.text('上传中...');
} else {
$btn.text('开始上传');
}
}); $btn.on('click', function () {
var type="010";
var onelevel = $("#onelevel option:selected").attr("id");
var twolevel = $("#twolevel option:selected").attr("id");
var threelevel = $("#threelevel option:selected").attr("id"); if (threelevel != undefined) {
type = threelevel;
}
else {
if (twolevel != undefined) {
type = twolevel;
} else {
if (onelevel != undefined) {
type = onelevel;
}
}
} // 初始化以后添加
uploader.options.formData.filetype = type; if (state === 'uploading') {
uploader.stop();
} else {
uploader.upload();
}
});
///取消上传
$('.uploader-list').on('click', '.btn-remove', function () {
debugger
// 从文件队列中删除某个文件id
file_id = $(this).data('id');
uploader.removeFile(file_id, true); // 从队列中删除
//console.log(uploader.getFiles()) // 队列显示还在 其实已经删除
});
//重试上传,重试指定文件,或者从出错的文件开始重新上传。
$('.uploader-list').on('click', '.upload-item__progress span', function () {
debugger
uploader.retry($(this).data('file'));
});
};

  

  5、常见问题及解决方案:

待写

 

Web Uploader上传文件的更多相关文章

  1. 解决Web Uploader上传文件和图片 延迟和not defined

    1.出现list not define时,var $list = $("#fileList"); 2.选择文件框有延迟,可能是因为选择文件类型过多 mimeTypes: 'imag ...

  2. 演示如何通过 web api 上传文件MVC40

    演示如何通过 web api 上传文件WebApiWebFormHost/UploadFileController.cs /* * 通过 web api 上传文件 */ using System; u ...

  3. 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作

    原文:返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, ...

  4. 数据採集之Web端上传文件到Hadoop HDFS

    前言 近期在公司接到一个任务.是关于数据採集方面的. 需求主要有3个: 通过web端上传文件到HDFS; 通过日志採集的方式导入到HDFS; 将数据库DB的表数据导入到HDFS. 正好近期都有在这方面 ...

  5. web uploader 上传大文件总结

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  6. 封装Web Uploader 上传插件、My97DatePicker、百度 编辑器 的使用 (ASP.NET MVC)

    Web Uploader: WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优 ...

  7. app端上传文件至服务器后台,web端上传文件存储到服务器

    1.android前端发送服务器请求 在spring-mvc.xml 将过滤屏蔽(如果不屏蔽 ,文件流为空) <!-- <bean id="multipartResolver&q ...

  8. C# Web Api 上传文件

    一. 使用默认方法上传文件: 1.Action: /// <summary> /// 上传文件 使用上传后的默认文件名称 /// 默认名称是BodyPart_XXXXXX,BodyPart ...

  9. 前端AngularJS后端ASP.NET Web API上传文件

    本篇体验使用AngularJS向后端ASP.NET API控制器上传文件.    首先服务端: public class FilesController : ApiController { //usi ...

  10. web前端:上传文件夹(需支持多浏览器)

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所 ...

随机推荐

  1. Mybaties中的报错 Tag name expected解决

    有些时候一些小小的报错可能会没有注意到,等到报错的时候才发现,一个小小的细节也是很重要的,毕竟我们是bug生产员 来看报错的代码 when round((UNIX_TIMESTAMP(DATE_ADD ...

  2. 靶机练习4: SolidState

    信息收集阶段 全端口扫描,查询目标靶机开放端口和服务 sudo nmap -p- -n -v -sS --max-retries=0 172.16.33.35 进行服务版本扫描 nmap -p22,2 ...

  3. c# message (转)

    一.消息概述 Windows下应用程序的执行是通过消息驱动的.消息是整个应用程序的工作引擎,我们需要理解掌握我们使用的编程语言是如何封装消息的原理. 什么是消息(Message) 消息就是通知和命令. ...

  4. VS/QT--调用第三方库dll总结

    假设外部第三方库为 test.h,test.lib,test.dll, 调用的函数是 int fnTest(int param); 一.VS中的静态调用和动态调用 1.1  静态调用 静态调用需要用到 ...

  5. Esp8266 Arduino PubSubClient连接阿里云老是返回rc=2错误的解决方案

    最近在用Esp8266 Arduino连接阿里云IOT的时候,服务器端老是返回rc=2 的错误! 用了MQTTfx模拟连接阿里云IOT没有问题,但是把同样的ClientID,UserName和Pass ...

  6. exp1-Password engine-加密API实现与测试

    加密API实现与测试 181210 1.准备工作 下载并查找GMT 0018-2012密码设备应用接口规范原始文档进行学习. 2.实现GMT 0018-2012接口函数 实现GMT 0018-2012 ...

  7. .NET Core读写InfluxDB时序数据库的方法教程

    前言 在我们很多应用中会遇到有一种基于一系列时间的数据需要处理,通过时间的顺序可以将这些数据点连成线,再通过数据统计后可以做成多纬度的报表,也可通过机器学习来实现数据的预测告警.而时序数据库就是用于存 ...

  8. kafka删除topic清空数据

    一般情况下,是不会删除数据的.到达一定时间后,kafka会自动删除.如果一定要删除可以删除topic在重建topic了 No. 1: 如果需要被删除topic 此时正在被程序 produce和cons ...

  9. 哲讯科技携手江苏大摩半导体借助SAP ERP打造数字化转型升级

    项目启动会2022年10月28日,无锡哲讯科技携手江苏大摩半导体科技有限公司SAP ERP系统实施项目启动大会于江苏大摩的上海总部会议室胜利召开.双方项目组核心成员,共同见证了本次SAP ERP实施项 ...

  10. json类型数据取出想要的部分

    因为才疏学浅,只能用很笨的方法. 以下是我拿到的数据的json型数据. {"result":{"ingredient":{"result": ...