最近在一个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. vue $mount 和 el的区别

    两者在使用效果上没有任何区别,都是为了将实例化后的vue挂载到指定的dom元素中. 如果在实例化vue的时候指定el,则该vue将会渲染在此el对应的dom中,反之,若没有指定el,则vue实例会处于 ...

  2. maven里面pom文件的各标签介绍

    由于maven在工作中经常使用,但是平时要记的知识点有点多,偶尔回头来看一些东西难免忘记,特此整理一篇笔记,方便大家搜索查询,也方便自己以后查询! 后续碰见其他的标签也会进行更新! maven的pom ...

  3. 049 DSL语句

    1.说明 2.sql程序 package com.scala.it import org.apache.spark.sql.hive.HiveContext import org.apache.spa ...

  4. python 列表list操作

    1. 切片:(左闭右开) 用-1倒置 2. 拆包 3. list的append 与 insert 4. 两个列表合并,直接 + : 5. 加入列表 extend: 6. pop()删除(通过序号,或最 ...

  5. Kafka的接口回调 +自定义分区、拦截器

    一.接口回调+自定义分区 1.接口回调:在使用消费者的send方法时添加Callback回调 producer.send(new ProducerRecord<String, String> ...

  6. JavaEE-Servlet的部署和配置

    1.:配置好相应环境和检查tomcat8.5能否运行,详见https://www.cnblogs.com/LJHAHA/p/10461697.html 2.将tomcat8.5下的webapps目录中 ...

  7. codeforces 1058B - Vasya and Cornfield

    <题目链接> 题目大意: 给出一个矩形,该矩形的四个顶点分别为:(0,d),(d,0),(n,n−d) and (n−d,n).然后给出一些点的坐标,分别判断这些点是否在该矩形内. 解题分 ...

  8. 牛客练习赛 26 B题 烟花【DP】(经典)

    <题目链接> 题目描述 小a有个烟花,每个烟花代表着互不相同的颜色,对于第个烟花,它有的概率点燃,现在小a要去点燃它们,他想知道产生颜色的期望个数 及 产生恰好产生种颜色的概率 输入描述: ...

  9. Vagrant 管理部署 VirtualBox (推荐使用)

    学习一段时间的大数据和容器技术,使用虚拟机搭建实验环境还是挺耗时耗力的. 一旦虚拟机坏掉了,还要重新开始. 最近发现了Vagrant, 简直好用上天,方便快捷,易用. 下面介绍如何在Windows中安 ...

  10. 李宏毅机器学习笔记4:Brief Introduction of Deep Learning、Backpropagation(后向传播算法)

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...