Asp.net mvc 4 如果文件名包含括号VS2010 ASP.NET MVC,则文件上载不会命中控制器方法
在一个创建视图中,该视图正确地以Asp.net mvc 4 如果文件名包含括号VS2010 ASP.NET MVC,则文件上载不会命中控制器方法,asp.net-mvc-4,upload,filenames,parentheses,Asp.net Mvc 4,Upload,Filenames,Parentheses,在一个创建视图中,该视图正确地以 @using (Html.BeginForm("Create", "Song", FormMethod.Post, new { enctype = "multipart/form-data" })) 在其他几个领域中,有一个 <div class="editor-field"> <input type='file' name="SongFileUpload" id="SongFileUpload" onchange="readURL(
@using (Html.BeginForm("Create", "Song", FormMethod.Post, new { enctype = "multipart/form-data" }))
在其他几个领域中,有一个
<div class="editor-field">
<input type='file' name="SongFileUpload" id="SongFileUpload" onchange="readURL(this);" />
@Html.ValidationMessageFor(model => model.SongData)
</div>
起初我认为这可能是因为文件名以@符号开头。但事实并非如此,因为我可以选择另一个同样长但不包含括号的文件名,然后跳入
[HttpPost]
public ActionResult Create( )
就像它应该做的那样,一切都按它应该做的那样进行
这到底是怎么回事
下面是readURL函数的JavaScript
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#SongMimeType').attr('value', input.files[0].type);
$('#SongData').InnerHtml = (e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
我猜JavaScript函数可能会爆炸??
我将如何修复它以处理带有括号的文件名???您是否尝试对文件名进行url编码?url编码文件名的确切位置?在JavaScript函数中?因为该字段是一个打开的对话框。还有哪些类似于onchange事件的事件需要我处理?要清楚。。。当我选择有问题的文件名时。。。当我点击submit时,它不会返回到我在VS2010中设置的调试点停止。。。在IE中提供的F12调试中,它直接说明此页面的错误无法显示。我在你的帖子中提供了信息,我想知道这是否与文件内容和文件名有关。你能试着从文件名中删除括号,然后再试一次,看看是否仍然有错误吗?这不是内容。这是文件名中的非法字符。在W3Little try It沙盒上,我创建了一个类似的where type is file字段,它返回了一个错误消息,解释它包含非法字符。因此,今天我要弄清楚如何以及在何处截取文件路径名,并按照您的建议通过url编码传递它。
[HttpPost]
public ActionResult Create( )
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#SongMimeType').attr('value', input.files[0].type);
$('#SongData').InnerHtml = (e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}