我试图在调试器中打印出文件的名称,以确保我到目前为止:
<EmployeeAuthorize()>
<HttpPost()>
Function SendNewMessage(ByVal file1 As HttpPostedFileBase) As JsonResult
Dim fileName = Path.GetFileName(file1.FileName)
Debug.Print(fileName)
Return Nothing
End Function
我发送的数据是:
var file1 = $('#file1').val();
$(this).parent('li').hide();
$('#pleaseWait').show();
$.ajax({
url: '/Message/SendNewMessage',
type: 'post',
data: { file1: file1 },
dataType: 'json',
success: function (result) {
// update with results
//alert(JSON.stringify(result));
$.each(result, function (i, item) {
// do nothing
});
$('#myDiv').html(JSON.stringify(result));
},
error: function (result) {
alert('An error occurred when updating the database. Please contact technical support. ');
}
});
它不会在我的控制台中打印任何数据。它给出了NullReferenceException
所以我可以假设它根本没有得到文件名。我究竟做错了什么?感谢。
答案 0 :(得分:2)
无法通过ajax直接上传文件。而不是它应该使用iframe或flash或jquery特殊插件。
例如,您可以通过jquery forms插件完成ajax文件上传。
试试这个,它有效:
Public Class MessageController Inherits System.Web.Mvc.Controller
Function SendNewMessage(ByVal file1 As HttpPostedFileBase) As JsonResult
Dim fileName = Path.GetFileName(file1.FileName)
Debug.Print(fileName)
Return Nothing
End Function
End Class
并在您看来:
<script type="text/javascript" >
$(function () {
var options = {
beforeSubmit: function (formData, jqForm, options) { }, // pre-submit callback
success: function (responseText, statusText, xhr, form) { } // post-submit callback
};
// bind form using 'ajaxForm'
$('#uploadForm').ajaxForm(options);
});
</script>
<form action="/Message/SendNewMessage" enctype="multipart/form-data" method="post" id="uploadForm" >
<input type="file" name="file1" />
<input type="submit" value="send" />
</form>