0

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

4

1 回答 1

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>
于 2012-10-17T18:48:21.083 回答