0

Yahooの投稿では、ファイルを添付するときに、押すと「ファイルを追加する」ボタンがあり、ファイルを挿入するための1つのフィールドになります。コードは次のとおりです。

<a href = "javascript: addUploadFields ();" id = "attach_more"> Attach more files </ a>

どうすればMVCを実装できますか?

4

5 に答える 5

0

ファイルアップロードコントロールを使用して複数のファイルをアップロードするには、シンプルで見やすいJQueryマルチファイルプラグインを使用します。このリンクを参照してくださいJQuery複数ファイルのアップロード

このライブラリとJQueryを含めるだけで、その構文は次のようになります。

<input type="file" class="multi"/>
于 2013-01-28T14:06:29.727 に答える
0

多くの失敗した解決策を疲れさせた後、私はそれを手に入れました

http://lbrtdotnet.wordpress.com/2011/09/02/asp-net-mvc-multiple-file-uploads-using-uploadify-and-jqueryui-progressbar/

この便利なリンクをクリックしてください

 I kept the Url Values in a session



 public JsonResult Upload(HttpPostedFileBase file)
    {
        if (Session["myAL"] == null)
        {
            al = new ArrayList();
        }
        else
            al = (ArrayList)Session["myAL"];

        var uploadFile = file;

            if (uploadFile != null && uploadFile.ContentLength > 0)
            {
                string filePath = Path.Combine(HttpContext.Server.MapPath("~/Content/Uploads"),
                                                   Path.GetFileName(uploadFile.FileName));                    
                al.Add(filePath);
                Session["myAL"] = al;
                uploadFile.SaveAs(filePath);
            }

        var percentage = default(float);

        if (_totalCount > 0)
        {
            _uploadCount += 1;
            percentage = (_uploadCount / _totalCount) * 100;
        }

        return Json(new
        {
            Percentage = percentage
        });
    }

その後、投稿作成アクションでそれらを取得しました

public ActionResult MultimediaCreate(MultimediaModel newMultimedia)
    {            
        if (ModelState.IsValid)
        {
            db.submitMultimedia(newMultimedia);
            al = (ArrayList)Session["myAL"];
            foreach(string am in al)
            {
                MarjaaEntities me = new MarjaaEntities();
                MultimediaFile file = new MultimediaFile();
                file.MultmediaId = newMultimedia.id;
                file.MultimediaFileUrl = am;
                me.MultimediaFiles.AddObject(file);
                me.SaveChanges();
                Session.Remove("myAL");
            }
            return RedirectToAction("MultimediaIndex");
        }
        return View();
    }
于 2013-02-04T17:29:34.747 に答える
0
  1. ファイルをアップロードできるコントローラーとアクションを作成する

  2. 複数のファイルのアップロードを実現するクライアント側プラグインを見つけます。私が非常にうまく機能していることがわかったのは、KendoUIによるUploadプラグインです

Kendo UIを使用する場合は、次のことを開始する必要があります。

コントローラ:

   [HttpPost]
    public ActionResult Save(HttpPostedFileBase[] files) {
        // The Name of the Upload component is "attachments"
        foreach (var file in files) {
            //Do Something
        }
        // Return an empty string to signify success
        return Content("");
    }

意見

<form action="/Controller/Action" method="post" enctype="multipart/form-data">
 <input type="file" name="files[]" id="file" />
...
</form>
于 2013-01-28T15:13:46.223 に答える
0

https://stackoverflow.com/questions/14575787/のようなほぼ同じ質問です。プラグインサポートマルチファイルアップロード。詳細が必要な場合はお知らせください。

于 2013-01-29T06:16:58.063 に答える
0

あなたはのような多くのファイルアップローダーを使用することができます

これ

そして、uはこのコードをアップロードに使用できます。このコードはクライアント側です。

<form enctype="multipart/form-data">
<input name="file" type="file" />
<input type="button" value="Upload" />
</form>
<progress></progress>

まず、必要に応じて検証を行うことができます。たとえば、ファイルのonChangeイベントで。

    $(':file').change(function(){
        var file = this.files[0];
        name = file.name;
        size = file.size;
        type = file.type;
        //your validation
    });

$(':button').click(function(){
    var formData = new FormData($('form')[0]);
    $.ajax({
        url: 'url',  //server script to process data
        type: 'POST',
        xhr: function() {  // custom xhr
            myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // check if upload property exists
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
        beforeSend: beforeSendHandler,
        success: completeHandler,
        error: errorHandler,
        // Form data
        data: formData,
        //Options to tell JQuery not to process data or worry about content-type
        cache: false,
        contentType: false,
        processData: false
    });
});

function progressHandlingFunction(e){
    if(e.lengthComputable){
        $('progress').attr({value:e.loaded,max:e.total});
    }
}

これがあなたのコントローラーです

 [HttpPost]
    public ActionResult Save(HttpPostedFileBase[] files) {
        // The Name of the Upload component is "attachments"
        foreach (var file in files) {
            //Do Something
        }
        // Return an empty string to signify success
        return Content("");
    }

したがって、ajaxを使用したくない場合は、これを使用してください

@{
    ViewBag.Title = "Upload";
}
<h2>
    Upload</h2>

@using (Html.BeginForm(actionName: "Upload", controllerName: "User", 
                       method: FormMethod.Post,
                       htmlAttributes: new { enctype = "multipart/form-data" }))
{
    <text>Upload a photo:</text> <input type="file" name="files"  multiple />
    <input type="submit" value="Upload" />
}
于 2013-01-29T06:28:05.743 に答える