0

jqueryform プラグインでファイルをアップロードしようとしています。アップロード コントロールをファイルする必要がありますが、2 つ目のコントロールはアップロードできませんか?

<div>
    <h2>
        Upload test</h2>
    <script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery-ui-1.8.12.custom.min.js" type="text/javascript"></script>
    <script src="../../Scripts/jqueryform.js" type="text/javascript"></script>
    <script src="../../Scripts/jblock.js" type="text/javascript"></script>
    <script type="text/javascript">

        $(document).ready(function (event) {

            $(function () {
                $("#ajaxUploadForm").ajaxForm({
                    iframe: true,
                    dataType: "json",
                    beforeSubmit: function () {
                        $("#ajaxUploadForm").block({ message: ' Uploading Image' });
                    },
                    success: function (result) {
                        $("#ajaxUploadForm").unblock();
                        $("#ajaxUploadForm").resetForm();
                        //$.growlUI(null, result.message);
                        if (result.message != 'Success') {
                            alert(result.message);
                        }
                        else {

                        }
                    },
                    error: function (xhr, textStatus, errorThrown) {
                        $("#ajaxUploadForm").unblock();
                        $("#ajaxUploadForm").resetForm();

                    }
                });
            });
        });
    </script>
    <form id="ajaxUploadForm" action="<%= Url.Action("Upload", "Home")%>" method="post"
    enctype="multipart/form-data">
    <input type="file" name="file" />

    <input type="file" name="file2" />

    <input id="ajaxUploadButton" type="submit" value="upload file" />
    </form>
</div>


  public ActionResult Index()
    {
        return View();
    }

    public FileUploadJsonResult Upload(HttpPostedFileBase file)
    {
        if (file == null)
        {
            return new FileUploadJsonResult { Data = new { message = "error" } };
        }

        if (file.ContentLength > 0)
        {
         //save file or something
        }

        return new FileUploadJsonResult { Data = new { message = string.Format("success") } };
    }


 public class FileUploadJsonResult : JsonResult
{
    public override void ExecuteResult(ControllerContext context)
    {
        this.ContentType = "text/html";
        context.HttpContext.Response.Write("<textarea>");
        base.ExecuteResult(context);
        context.HttpContext.Response.Write("</textarea>");
    }
}
4

1 に答える 1

2

フォームには、それぞれfileとという名前の 2 つのファイル入力がありますfile1。アップロードを処理するコントローラー アクションには、HttpPostedFileBaseという名前の引数が 1 つだけありますfile。したがって、2 つ目を追加できます。

public FileUploadJsonResult Upload(
    HttpPostedFileBase file, 
    HttpPostedFileBase file1
)
{
    if (file == null || file1 == null)
    {
        return new FileUploadJsonResult { Data = new { message = "error" } };
    }

    if (file.ContentLength > 0)
    {
        //save file or something
    }

    if (file1.ContentLength > 0)
    {
        //save the second file or something
    }

    return new FileUploadJsonResult { Data = new { message = string.Format("success") } };
}

または、複数のファイルを処理したい場合は、フォームで同じ名前を付けることができます:

<input type="file" name="files" />
<input type="file" name="files" />
<input type="file" name="files" />
<input type="file" name="files" />
<input type="file" name="files" />
...

コントローラーのアクションは、ファイルのリストを取得できます。

public FileUploadJsonResult Upload(IEnumerable<HttpPostedFileBase> files)
{
    if (files)
    {
        return new FileUploadJsonResult { Data = new { message = "error" } };
    }

    foreach (var file in files)
    {

        if (file.ContentLength > 0)
        {
            //save file or something
        }
    }

    return new FileUploadJsonResult { Data = new { message = string.Format("success") } };
}

ASP.NET MVC でのファイルのアップロードに関する次のブログ投稿を確認してください。

于 2011-06-23T05:08:44.650 に答える