【发布时间】:2016-05-25 16:27:56
【问题描述】:
我有一个视图允许用户一次上传多个,如下所示
<label class="control-label">Files:</label>
<div id="fileUploadContainer">
<div id="uploadContainer" style="height:30px">
<input type="file" id="file1" name="file1" onchange="ValidateSingleInput(this);" />
</div>
<div class="controls">
<div id="fileappend">
<div id="fileappendContainer">
<output id="filesSize"></output>
</div>
</div>
</div>
</div>
<a id="btnAdd" href="#">Add Another</a>
代码“添加另一个”点击:
$(function () {
$('#btnAdd').click(function (e) {
e.preventDefault();
var htmlFormatDiv = $("<div id='uploadContainer' style='height:30px'></div>");
var htmlFormatFile = $("<input type='file' onchange='ValidateSingleInput(this);' />");
var totalFileCount = $("#fileUploadContainer").children("div").length;
var fuData = document.getElementById('<%= file1.ClientID %>');
htmlFormatFile.attr("id", "file1");
htmlFormatFile.attr("name", "file1");
htmlFormatDiv.attr("id", "uploadContainer");
htmlFormatDiv.append(htmlFormatFile);
$("#fileUploadContainer").append(htmlFormatDiv);
$("#filesSize").append(htmlFormatDiv);
});
});
限制文件上传扩展类型和显示文件大小的代码
var _validFileExtensions = [".jpg", ".jpeg", ".pdf"];
function ValidateSingleInput(oInput) {
if (oInput.type == "file") {
var sFileName = oInput.value;
if (sFileName.length > 0) {
var fsize = sFileName.size;
if (fsize > 4048576) {
alert(fsize + " bites\nToo big!");
}
var blnValid = false;
for (var j = 0; j < _validFileExtensions.length; j++) {
var sCurExtension = _validFileExtensions[j];
if (sFileName.substr(sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase())
{
blnValid = true;
$('#filesSize').append('Size - ' + ((oInput.files[0].size) / 1024 / 1024).toFixed(2) + 'mb' + '<br />');
break;
}
}
if (!blnValid) {
alert("Sorry, " + sFileName + " is invalid, allowed extensions are: " + _validFileExtensions.join(", "));
oInput.value = "";
return false;
}
}
}
return true;
}
当我单击任何现有的浏览按钮再次浏览另一个文档时,就会出现问题。旧文件的大小将保留在那里,新文件的大小将附加到最后一个文件名,而与单击的浏览按钮无关。 有没有办法避免同样的情况?
还有比这更简单的方法吗。
控制器
public ActionResult file_upload(IEnumerable<HttpPostedFileBase> file1)
{
foreach (var file in file1)
{
if (file != null)
{
if (file.ContentLength > 0)
{
}
}
}
}
【问题讨论】:
标签: jquery asp.net-mvc-4 jquery-file-upload