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]);
    }
}