如何在MVC中上传文件

时间:2012-10-17 18:05:38

标签: jquery asp.net-mvc vb.net asp.net-mvc-3

  

可能重复:
  File Upload ASP.NET MVC 3.0

我试图在调试器中打印出文件的名称,以确保我到目前为止:

<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所以我可以假设它根本没有得到文件名。我究竟做错了什么?感谢。

1 个答案:

答案 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>