我正在使用ASP .Net MVC 4.0,RazorView,C#,VS2010。
我有一个html输入类型='文件'。任务是将文件复制到某个目录,而用户将从文件浏览器中选择该文件。
如果我获得完整的文件路径,那可以解决问题。但是谷歌搜索了3个多小时后我失败了。
如果我使用jQuery / Javascript获取文件并使用ajax发送到服务器端,那么它也可以解决。
我双双都失败了。以下是我的一些代码:
function checkFileType() {
var input = document.getElementById('IDbtnUpload');
var selected_file = document.getElementById('IDbtnUpload').files[0];
if (input.value != "") {
document.getElementById('lblFile').innerHTML = "";
var file = input.value;
document.getElementById('hiddenFileName').value = file.toString();
if ((file.lastIndexOf('xls') == file.length - 3) || (file.lastIndexOf('xlsx') == file.length - 4) || (file.lastIndexOf('csv') == file.length - 3)) {
alert(file.toString());
var url = '@Url.Action("ProcessExcel", "NeuGesellschaft")';
$.post(url, { x: selected_file }, function (data) {
//$('#textareaReadonly').val(data);
alert(data);
});
}
else {
document.getElementById('lblFile').innerHTML = "Incorrect File Format. Please browse an excel/csv file!";
alert('Incorrect File Format. Please upload an excel/csv file!');
}
}
}
我尝试使用 $。post 将文件发送到我的服务器端方法。
如果有人建议如何发送文件或如何获取完整的文件名(其中任何一个都会被评估),那将有助于我。
编辑1:
public string ProcessExcel(object formData)
{
return "";
}
我的参数的数据类型是什么?
答案 0 :(得分:1)
$.post(url, { x: selected_file }, function (data) {
只会发送{x : "[object FileList]"}
,因为文件[0]将返回FileList
。如果要发送文件内容,则需要使用FormData
(使用jQuery):
var fileInputNode = document.getElementById('IDbtnUpload');
var file = fileInputNode.files[0];
var url = '@Url.Action("ProcessExcel", "NeuGesellschaft")';
var xhr = new XMLHttpRequest();
var formData = new window.FormData();
formData.append(fileInputNode.name, file);
xhr.open('POST', url);
xhr.send(formData);
此外,您可以使用jQuery File Upload plugin进行文件上传。