使用fileinput 做了一个上传功能,本地测试正常,部署到服务器上 ,发现服务端接收文件大小每次都不一样,都不是一个完整文件
前端js
//初始化fileinput控件(第一次初始化)
oFile.Init = function (ctrlName, uploadUrl) {
var control = $('#' + ctrlName);
//初始化上传控件的样式
control.fileinput({
language: 'zh', //设置语言
uploadUrl: uploadUrl, //上传的地址
allowedFileExtensions: ['xlsx', 'xls','doc','docx','txt','PDF','png','jpeg','jpg','gif','zip','rar'],//接收的文件后缀
showUpload: true, //是否显示上传按钮
//showPreview: false, //是否显示预览
showCaption: true,//是否显示标题
browseClass: "btn btn-primary", //按钮样式
autoReplace: true,
//dropZoneEnabled: false,//是否显示拖拽区域
//minImageWidth: 50, //图片的最小宽度
//minImageHeight: 50,//图片的最小高度
//maxImageWidth: 1000,//图片的最大宽度
//maxImageHeight: 1000,//图片的最大高度
maxFileSize: 512000,//单位为kb,如果为0表示不限制文件大小
//minFileCount: 0,
maxFileCount: 10, //表示允许同时上传的最大文件个数
allowedPreviewTypes: ['image'],
enctype: 'multipart/form-data',
//validateInitialCount:true,
previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
uploadExtraData: function () {//向后台传递参数
var data = {
TimerID: $("#TimerID").val(),
//versionNum: $("#versionNum").val(),
//description: $("#description").val()
};
return data;
},
});
//导入文件上传完成之后的事件
$('#' + ctrlName).on("fileuploaded", function (event, data, previewId, index) {
//$("#myModal").modal("hide");
var data = data.response;
if (data.ResultCode == "1") {
//清空上传区域
$(event.target)
.fileinput('clear')
.fileinput('unlock')
//$("#excelFileName").val(data.ResultValue.fileName);
//$("#excelPath").val(data.ResultValue.filePath);
layer.msg('上传成功', { time: 2000, icon: 1 });
} else {
layer.msg(data.requestMsg, { time: 2000, icon: 2 });
//$('.fileinput-remove').click();
$(event.target)
.fileinput('clear')
.fileinput('unlock')
}
}).on("filebatchuploadsuccess", function (event, data, previewId, index) {
//$("#myModal").modal("hide");
var data = data.response;
if (data.ResultCode == "1") {
//清空上传区域
$(event.target)
.fileinput('clear')
.fileinput('unlock')
//$("#excelFileName").val(data.ResultValue.fileName);
//$("#excelPath").val(data.ResultValue.filePath);
layer.msg('上传成功', { time: 2000, icon: 1 });
} else {
layer.msg(data.requestMsg, { time: 2000, icon: 2 });
//$('.fileinput-remove').click();
$(event.target)
.fileinput('clear')
.fileinput('unlock')
}
});
}
return oFile;
},
后台代码
#region 多文件上传
[HttpPost]
public ActionResult FileUpMany()
{
try
{
foreach (string key in Request.Files)
{
string TimerID = Request["TimerID"];
//var a =cronTimeBll.IFInTestTime(TaskInfo.TimerCode, "", 0);
string FilePath = "/FileManSYS/" + DateTime.Now.ToString("yyyy") + "/" + DateTime.Now.ToString("MMdd") + "/";
string uploadPath = UploadUrl + FilePath;
//uploadPath = Server.MapPath(UploadUrl+FilePath);
if (!Directory.Exists(uploadPath))
{
Directory.CreateDirectory(uploadPath);
}
//var postedFile = HttpContext.Request.Files[key]; // 获取文件键对应的文件对象
var uploadFile = Request.Files[key];
if (uploadFile != null && uploadFile.ContentLength > 0)
{
string oFileName = uploadFile.FileName;
string oExt = oFileName.Substring(oFileName.LastIndexOf('.'));
string FileName = oFileName.Remove(oFileName.Length - oExt.Length, oExt.Length);
string Filetype = oExt.Remove(0, 1);
string FileTrueName = FileName + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + oExt;
string FileAllPath = UploadUrl + FilePath + FileTrueName;
string FilePartPath = FilePath + FileTrueName;
uploadFile.SaveAs(FileAllPath);
}
}
return Ok();
}
catch (Exception e)
{
throw;
}
}
#endregion
明明是同一个文件,每次上传大小都不一样,源文件有十几mb
内容有丢失?
是的 一个10MB 的文件 上传上去只有3mb h或者4mb 每次都不一样
系统异常,重装系统
foreach (string key in Request.Files) 该语句出的问题,改为先获取文件数,然后循环文件数,而不是循环文件,则没有问题