ASP.NET上传文件返回其内容

时间:2015-02-20 16:25:01

标签: asp.net

我正在尝试上传文件,然后将其内容检索为JSon

我的控制器:

controller.cs
[HttpPost]
public JsonResult Upload(HttpPostedFileBase file)
{
List<string> list = doStuff(file);
return Json(list);
}

我的观点:

view.cshtml
@using (Html.BeginForm("Upload", "Files", FormMethod.Post, new { enctype = "multipart/form-data" }))
{  
    <input type="file" id="file" name="file" />
    <input type="submit" name="Upload" value="Upload" />
}

当我上传文件时,它建议我下载一个JSON文件,但我想要的是用这个JSON设置一个javascript变量,所以我可以直接在我的网页上使用它。

1 个答案:

答案 0 :(得分:1)

我认为最好的解决方案是使用ajax表单。

请参阅以下示例:

控制器:

[HttpPost]
public JsonResult Upload(HttpPostedFileBase file)
{
    return Json(new { ReturnMessage = "Success!!!!!" + file.FileName});
}

查看:

@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { @id="formUploadFile", @onsubmit = "return SubmitFormWithFile();" }))
{

    @Html.TextBox("file", null, new { @type = "file", @id = "file" })

    <button type="submit">Send</button>
}

使用Javascript:

    function SubmitFormWithFile() {
        var form = $("#formUploadFile");

        $.ajax({
            url: form.attr("action"),
            type: form.attr("method"),
            data: new FormData(form[0]),
            cache: false,
            contentType: false,
            processData: false,
            beforeSend: function () {
                alert("Before Send");
            },
            success: function (dataResult) {
                //set its variable here...
                //the dataResult is returned json...

                alert(dataResult.ReturnMessage);
            },
            error: function () {
                alert("Error");
            }
        });

        return false;
    }