作者:Wo-们是平行线 | 来源:互联网 | 2023-01-29 18:09
在JS里定义了事件:
'onUploadSuccess': function (file, data, response) {
.....
}
MVC接收上传的文件,并验证数据,然后返回验证结果,返回的是一个JsonResult。
逻辑及代码都非常的简单,不过,当MVC返回的Json太多时(用户上传的数据太多了,错误也比较多),MVC得到的错误信息都有20多万个字符。
结果是:MVC端一点错误也没有,打断点也可以看到JSON结果,但是uploadify的onUploadSuccess就是不执行。 然后我把返回结果人为的截断一些(18万个字符),就可以了。
是不是uplpadify这个的限制,还是哪里的呀?怎么才能解决这个问题呢?
JS代码:
$("#file_upload").uploadify({
//开启调试
'debug': false,
//是否自动上传
'auto': true,
'buttonText': '选择文件',
//flash
'swf': "@Url.Content("~/Scripts/uploadify-v3.2/uploadify.swf")",
//文件选择后的容器ID
'queueID': 'uploadfileQueue',
'uploader': '@Url.Action("ImportExcel", "XXXX")',
'width': '86',
'height': '30',
//'method': 'post',
'multi': false,
'folder': 'UploadFileId',
'fileTypeDesc': '支持的格式:',
'fileTypeExts': '*.xls;*.xlsx;',
'fileSizeLimit': '100MB',
'removeTimeout': 1,
//返回一个错误,选择文件的时候触发
'onSelectError': function (file, errorCode, errorMsg) {
.....
},
//检测FLASH失败调用
'onFallback': function () {
alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
},
//上传到服务器,服务器返回相应信息到data里
'onUploadSuccess': function (file, data, response) {
.....
}
});
17 个解决方案
$('#file_upload').uploadify({
'buttonText': '浏 览',
'uploader': '/FileUpload/Upload',
'fileTypeExts': '*.gif; *.jpg; *.png; *.bmp; *.flv',
'onQueueComplete': function (event, data) {
ShowUpFiles($("#Attachment_GUID").val(), "div_files");
$.messager.alert("提示", "上传完毕!")
},
'onUploadSuccess': function (file, data, response) {
$("#Attachment_GUID").val(data);
$.messager.alert("提示", "上传完毕!");
},
FileUploadController
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Upload(HttpPostedFileBase fileData, string guid, string folder)
{
if (fileData != null)
{
try
{
.....
//return Json(new { Success = true, FileName = fileName, SaveName = saveName });
return Content(saveName);
}
catch (Exception ex)
{
return Content("false");
}
}
else
{
return Content("false");
}
}
这样返回就可以了
功能是已经实现的, 我的问题是,后端返回的data太长了,然后 onUploadSuccess 这个事件就不进了。不知道是MVC的问题,还是这个插件的限制?
不是有一个'fileSizeLimit,那个不管用吗?
既然系统给出的异常里的文字太多了,你就自己捕获异常,然后封装自己的一个异常吧。
大家没明白我的意思, 后台并没有抛出任何异常, 返回很多数据的原因很简单:就是上传的文件是一个Excel表格,传上去之后还需要在后台对数据做一下校验。
问题是:当返回的data很长时,onUploadSuccess这个事件就不走了,把返回的内容截断一些就可以了。但是,直接截断好像太暴力了吧!
在后台校验数据返回个是否成功的结果回来就好了,也不会有很多数据
但是需求上要求对每一行的错误要有明确的提示, 比如,用户一次导入了4000条数据,如果有错误,直接提示数据有误,请检查,这样体验太差了吧
你在服务端生成一个临时的html文件,记录错误信息,完了把地址发给客户端,客户端转到错误信息页去看
有类似错误,当视频比较大的时候,页面显示上传成功,实际还是一点点的在往服务器上上传