百度webupload网址:http://fex.baidu.com/webuploader/

引入js和css

<script src="../../Content/webuploader.js"></script>
<link href="../../Content/webuploader.css" rel="stylesheet" />

页面html代码

<div id="uploader" class="wu-example">
<!--用来存放文件信息-->
<div id="thelist" class="uploader-list"></div>
<div class="btns">
<div id="picker">选择文件</div>
<button id="ctlBtn" class="btn btn-default">开始上传</button>
</div>
</div>

初始化webupload.js

<script type="text/javascript">
// 文件上传
jQuery(function () {
var $ = jQuery,
$list = $('#thelist'),
$btn = $('#ctlBtn'),
state = 'pending',
uploader;

uploader = WebUploader.create({

// 不压缩image
resize: false,

// swf文件路径
swf: '/content/Uploader.swf',

// 文件接收服务端。
server: '/Webupload/Process',   (这是在后台写的接收前台传送的文件方法)

// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.

pick: '#picker',
chunked :true,
chunkSize: 5242880,(分布上传 一次5mb)

threads :1(这个是关键  如果不限制同时上传的数目 会导致后台接受的分片错乱  比如按正常的分片第一片应该是开头 但接收的可能就变成第三片从而顺序错乱  这是由于百度webuploader默认允许同时最大上传进程数为3个  所以会导致接受顺序错乱从而重组发生错误)

});

// 当有文件添加进来的时候
uploader.on('fileQueued', function (file) {
$list.append('<div id="' + file.id + '" class="item">' +
'<div class="info">' + file.name + '</div>' +
'<div class="state">等待上传...</div>' +
'<div class="download" style="display:none;"></div>' +
'<div class="del"></div>' +
'</div>');
});
uploader.on('uploadProgress', function (file, percentage) {
var $li = $('#' + file.id),
$percent = $li.find('.progress .bar');

// 避免重复创建
if (!$percent.length) {
$percent = $('<span class="progress">' +
'<span class="percentage"><span class="text"></span>' +
'<span class="bar" role="progressbar" style="width: 0%">' +
'</span></span>' +
'</span>').appendTo($li).find('.bar');
}

$li.find('div.state').text('上传中');
$li.find("span.text").text(Math.round(percentage * 100) + '%');//显示上传进度
$percent.css('width', percentage * 100 + '%');
});

uploader.on('uploadSuccess', function (file) {
$('#' + file.id).find('div.state').text('已上传');
});

uploader.on('uploadError', function (file) {
$('#' + file.id).find('div.state').text('上传出错');
});

uploader.on('uploadComplete', function (file) {
$('#' + file.id).find('.progress').fadeOut();
});

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 () {
if (state === 'uploading') {
uploader.stop(true);//不加ture暂停上传没用!
} else {
uploader.upload();
}
});
});

</script>

后台接收上传的文件的代码(接收接口) 内有上传分布接受

public class WebuploadController : Controller
{
//
// GET: /Webupload/

public WebuploadController()
{
var applicationPath = VirtualPathUtility.ToAbsolute("~") == "/" ? "" : VirtualPathUtility.ToAbsolute("~");
urlPath = "/PHP";
}

static string urlPath = string.Empty;
static string guid = Guid.NewGuid().ToString("N");
static int num = 1;
public ActionResult Process(string id, string name, string type, string lastModifiedDate, int size, HttpPostedFileBase file)
{
string filePathName = string.Empty;

string localPath = Path.Combine(HttpRuntime.AppDomainAppPath, "PHP");
if (Request.Files.Count == 0)
{
return Json(new { jsonrpc = 2.0, error = new { code = 102, message = "保存失败" }, id = "id" });
}

string ex = Path.GetExtension(file.FileName);
filePathName = guid+"_"+num + ex;//分布接受(建立每个接受分段的名字)
num++;

if (!System.IO.Directory.Exists(localPath))
{
System.IO.Directory.CreateDirectory(localPath);
}
file.SaveAs(Path.Combine(localPath, filePathName));//写入文件夹中

int total = size / 5242880;//判断有多少个分块
if(size%5242880>0)
{
total += 1;
}

//重组

if (num > total)
{
chongzu(total, ex, guid, localPath);
}

return Json(new
{
jsonrpc = "2.0",
id = "id",
filePath = urlPath + "/" + filePathName
});
}

//重组(分片数目,接受视频类型,存储视频的名字,存放的地址)

public void chongzu(int total, string ex, string guid, string localPath)
{
try
{
string fileurl = Path.Combine(localPath, guid + ex);

var fs = new FileStream(fileurl, FileMode.Create);

for (int i = 1; i <= total; ++i)
{

string part = Path.Combine(localPath, guid + "_" + i + ex);

var bytes = System.IO.File.ReadAllBytes(part);

fs.Write(bytes, 0, bytes.Length);

bytes = null;

System.IO.File.Delete(part);

}
fs.Close();

filenameone = guid + ex;

}
catch (Exception e) { Response.Write("<script>alert('视频重组失败') </script>"); }
finally { num = 1; guid = Guid.NewGuid().ToString("N"); //为了下个视频重置num 和 guid }

}

}

对于上传大的文件需要在配置文件中改iis配置

<system.web>

<httpRuntime maxRequestLength="999999999" />//用户上传文件最大体积
<compilation debug="true" targetFramework="4.0" />

</system.web>

<system.webServer>

<security>

<requestFiltering>
<requestLimits maxAllowedContentLength="3000000000" />
</requestFiltering>
</security>
</system.webServer>

百度webuploader上传 1的更多相关文章

  1. SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片

    SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片   在上一篇文章中,我们介绍了< SpringMVC上传图片的常规上传方法 >.本文接着第一 ...

  2. 百度webuploader 上传演示例子

    前端代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="baiduWebU ...

  3. PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件

    PHP  多图上传,图片批量上传插件,webuploader.js,百度文件上传插件(案例教程) WebUploader作用:http://fex.baidu.com/webuploader/gett ...

  4. webuploader 上传文件参数设置

    webUploader 是款很好用的优秀的开源上传组件,由百度公司开发,详细的介绍可参见webUploader 的官方文档: 最近在使用webUploader时,需要添加额外的参数,并在后台获取,参数 ...

  5. webuploader 上传文件 生成链接下载文件

    最近 在asp.net MVC 项目 需要实现一个Excel和 图片上传功能.之前有使用过SWFUpload 做过上传图片功能,在本次实现过程中,有人推荐WebUploader 上传组件,因此采用we ...

  6. 支持移动端裁剪图片插件Jcrop(结合WebUploader上传)

    (此教程包括前端实现图片裁剪,后端进行获取裁剪区并保存) 最近有一个需求,微信公众号上传图片,支持自定义裁剪. 以前用过一款裁剪插件cropper,很久没用了,不知道对移动端操作兼容如何,重新从网上搜 ...

  7. webUploader上传大视频文件相关web.config配置

    在webuploader上传大文件时必须配置一下,不然请求后台处理程序时,会请求超时.出现404! <system.web> <httpRuntime maxRequestLengt ...

  8. 百度编辑器上传视频报Http请求错误,.net实现方式

    在使用百度编辑器上传视频的时候遇到一个很奇怪的问题,当视频大小在20M以下的时候,上传正常.当大于20M时,一直报Http请求错误. 处理步骤: 1.修改编辑器配置信息,如图所示,改成你想要的大小 2 ...

  9. vue 百度云上传文件PostObject

    百度云上传文件 API(PostObject) PostObject接口  : 接口描述 此接口使用HTML表单上传文件到指定bucket,用于实现通过浏览器上传文件到bucket.在PutObjec ...

随机推荐

  1. Hash模板

    ;//一般为靠近总数的素数 struct Hashtable { int x;//hash存的值 Hashtable * next; Hashtable() { next = ; } }; Hasht ...

  2. POJ-2139 Six Degrees of Cowvin Bacon---Floyd

    题目链接: https://vjudge.net/problem/POJ-2139 题目大意: 给定一些牛的关系,他们之间的距离为1. 然后求当前这只牛到每只牛的最短路的和,除以 n - 1只牛的最大 ...

  3. POJ-3020 Antenna Placement---二分图匹配&最小路径覆盖&建图

    题目链接: https://vjudge.net/problem/POJ-3020 题目大意: 一个n*m的方阵 一个雷达可覆盖两个*,一个*可与四周的一个*被覆盖,一个*可被多个雷达覆盖问至少需要多 ...

  4. 1.6 NBU Catalog备份还原

    用户的数据保存到了磁盘或者磁带中,并且是安全的,NBU所在的机器还有可能发生故障,需要重新安装或者将NBU部署到其他的机器中继续使用. 在这种情况下,如何让NBU知道用户已经存在的备份策略和存储单元配 ...

  5. 求最长上升子序列(Lis模板)

    实现过程 定义已知序列数组为dp[]:dp[1…8]=389,207,155,300,299,170,158,65 我们定义一个序列B,然后令 i = 1 to 8 逐个考察这个序列.此外,我们用一个 ...

  6. 洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)

    题目背景 提示:原 P1829 半数集问题 已经迁移至 P1028 数的计算 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a ...

  7. C/C++程序基础 (十一)标准模板库

    标准模板库 标准模板库在标准函数库的定位 迭代器(类似指针)保证算法(常用算法)和容器(数据结构)的结合. vector的实现 底层实现是动态数组,所以支持随机访问. 内部是动态数组,随着insert ...

  8. js、jquery初始化加载顺序

    // ready 这个方法只是在页面所有的DOM加载完毕后就会触发 // 方式1 $(function(){ // do something }); // 方式2 $(document).ready( ...

  9. MySQL工作经验

    以下是根据工作中遇到各种场景用到的一些Mysql用法,比较实用,基本是语法之外的一些东西. 修改账户密码 1.打开Mysql控制台,输入原密码: 2.输入以下语法:mysql> set pass ...

  10. Java之 jstl 自定义标签的方法

    1.写一个Java类 我的路径是写再tag包中的一个 HelloTag类 package tag; import java.io.IOException; import javax.servlet.j ...