最近在一个ASP.NET 项目中使用了plupload来上传文件,结果几天后客户发邮件说上传的文件不对,说是文件无法打开

在进入系统进行查看后发现上传的文件竟然没有后缀,经过一番测试发现如果文件上传的太大就可能出现该问题
 
随后在google上进行搜索才知道当使用html5上传大文件时就有可能出现该问题
好在Plupload官方论坛上给出了解决方案,其实就是将大文件分批写入到同一个文件中
这样就不会受IIS或web.config的最大文件大小限制了
 
1.在js中添加事件
var plupload=$("#uploader").plupload({
//解决分块上传时文件名为"blob"的bug
init:{
BeforeUpload:function(up, file){
// Called right before the upload for a given file starts, can be used to cancel it if required
up.settings.multipart_params ={
filename: file.name
};
},
}
});
2.后台处理文件时使用参数"filename"而不是上传的文件名
  /// <summary>
/// 上传文件
/// </summary>
/// <param name="context"></param>
public void UploadFile(HttpContext context)
{
if (context.Request.Files.Count <= ) return; context.Response.CacheControl = "no-cache"; string s_rpath = "E:\website\temp"; //是否是分块上传
bool isChunk = false; //上传文件路径
string filepath = string.Empty; FileStream fs = null; //字节
Byte[] buffer = null; //需要上传的文件
HttpPostedFile httpUploadFile = null; //分块上传的文件名,结合js用于解决使用分块上传时当前文件名为"blob"的bug
string filename = context.Request["filename"]; //存在块参数
if (!string.IsNullOrEmpty(context.Request.Params["chunk"]))
{
int chunk_number = ;
int.TryParse(context.Request.Params["chunk"], out chunk_number);
isChunk = chunk_number > ;//分块上传,第一块为0
} try
{
for (int i = ; i < context.Request.Files.Count; i++)
{
#region 上传文件
//文件列表
httpUploadFile = context.Request.Files[i]; //块文件名不存在则使用当前文件的文件名
if (string.IsNullOrEmpty(filename) || filename.Length <= )
filename = httpUploadFile.FileName; filepath = System.IO.Path.Combine(s_rpath, filename); //对文件流进行存储
//如果是块上传则写入文件否则创建文件
fs = new FileStream(filepath, isChunk ? FileMode.OpenOrCreate : FileMode.Append);
buffer = new Byte[httpUploadFile.InputStream.Length];
httpUploadFile.InputStream.Read(buffer, , buffer.Length);
fs.Write(buffer, , buffer.Length);
fs.Close();
#endregion
}
}
catch (Exception ex)
{
context.Response.Write("error:" + ex.ToString());
}
}
 
有图有真相:
 
参考:

关于plupload的使用心得

ps:

为知笔记恶心的强制收费导致非常的不爽

所以准备把未上传到博客的为知笔记文章陆续上传

ASP.NET 使用 plupload 上传大文件时出现“blob”文件的Bug的更多相关文章

  1. plupload上传大文件

    大容量文件上传早已不是什么新鲜问题,在.net 2.0时代,HTML5也还没有问世,要实现这样的功能,要么是改web.config,要么是用flash,要么是用一些第三方控件,然而这些解决问题的方法要 ...

  2. asp.net core mvc上传大文件解决方案

    默认上传文件大小不超过30M 第一个问题: IIS 10.0 详细错误 - 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求. 服务器上的请求筛选被配置为拒绝该请求 ...

  3. Asp.Net上传大文件带进度条swfupload

    Asp.Net基于swfupload上传大文件带进度条百分比显示,漂亮大气上档次,大文件无压力,先看效果 一.上传效果图 1.上传前界面:图片不喜欢可以自己换 2.上传中界面:百分比显示 3.上传后返 ...

  4. [Asp.net]Uploadify上传大文件,Http error 404 解决方案

    引言 之前使用Uploadify做了一个上传图片并预览的功能,今天在项目中,要使用该插件上传大文件.之前弄过上传图片的demo,就使用该demo进行测试.可以查看我的这篇文章:[Asp.net]Upl ...

  5. ASP.NET上传大文件的问题

    原文:http://www.cnblogs.com/wolf-sun/p/3657241.html?utm_source=tuicool&utm_medium=referral 引言 之前使用 ...

  6. asp.net上传大文件

    Asp.net默认允许上传文件的最大值为4M. 如果想要上传更大的文件,需要修改web.config文件,方法是: 在<system.web>节点中添加代码 <httpRuntime ...

  7. ASP.NET上传大文件出现网页无法显示的问题

    使用FileUpload上传的时候,默认允许大小是4M,而当小于4M的时候正常运行:当超过4M将显示网页无法显示.解决方法如下: 在web.config中的<system.web>< ...

  8. [Asp.net]Uploadify上传大文件,Http error 404 解决方案 - wolfy

    引言 之前使用Uploadify做了一个上传图片并预览的功能,今天在项目中,要使用该插件上传大文件.之前弄过上传图片的demo,就使用该demo进行测试.可以查看我的这篇文章: [Asp.net]Up ...

  9. asp.net上传大文件-请求筛选模块被配置为拒绝超过请求内容长度的请求

    HTTP错误404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求,原因是Web服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 默认文件上传大 ...

随机推荐

  1. HTML5上传图片预览功能

    HTML5上传图片预览功能 HTML代码如下: <!-- date: 2018-04-27 14:41:35 author: 王召波 descride: HTML5上传图片预览功能 --> ...

  2. Date类的使用

    [构造方法] 1)Date():无参构造 [代码] Date date = new Date(); System.out.println(date); 2)Date(long time):带参构造 [ ...

  3. 用vs调式docker环境下web程序的一处坑

    新建web项目,此时launchSettings.json文件为: "iisSettings": { "windowsAuthentication": fals ...

  4. 3186Treats for the Cows(区间dp)

    题意:给一个数组v,每次可以取前面的或者后面的,第k次取的v[i]价值为v[i]*k,问总价值最大是多少. 区间dp. 区间dp可以不枚举len  直接枚举i和j即可  见代码 #include &l ...

  5. 环形链表(给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null)

    思想: 思想:用快慢指针先判断是否有环,有环则 假设头结点到环入口距离为n,环入口到快慢指针相遇结点距离为m,则慢指针走的路程 为m+n,而快指针走的路程为m+n+k*l (k*l表示绕环走的路程), ...

  6. spring mvc中的service和controller中读取不到properties值

    根据web.xml读取配置文件中的顺序来看 controller层和service层来自于spring mvc.xml中读取,所以必须要在spring mvc.xml中配置读取资源文件夹方式

  7. 【JavaScript】对象

    No1: typeof操作符获取对象的类型 null的类型是object,Array的类型也是object,如果我们用typeof将无法区分出null.Array和通常意义上的object——{}. ...

  8. MongoDB+php7搭建

    0x00前言: 今天一位非计算机专业的朋友问我怎么打开.bson文件,我第一反应.bson文件是什么,网上查了下是mongodb的传输文件.也就是类似于mysql的.sql文件一样 之前看过mongo ...

  9. ISP PIPLINE(零) 知识综述预热

    本文为camera isp pipline概述 ISP,即image signal processing.为图像成型做的处理工作.适应不同光学环境下图像的还原. pipline流程如下: 光通过LEN ...

  10. WPF DataGrid 每行ComboBox 内容不同的设置方法

    <toolkit:DataGridComboBoxColumn x:Name="DgCbcSignal" Header="信号源" SelectedIte ...