1

サーバーにアップロードされた複数のファイルを送信するためにajaxフォームを使用しています。これは私のフォームがどのように見えるかです

   @using (@Ajax.BeginForm("SaveProjectSummary", "Project", new { id = Model.ProjectId }, new AjaxOptions { OnSuccess = "Add_OnCompleteSummarySave()" }, new { enctype = "multipart/form-data" }))

目的のアクションにつながることはできますが、サーバー上のRequest.Files内に何も見つかりません。私がこれを使用しているのかどうかを確認したいだけですが、私には思えない権利なので、助けていただければ幸いです。

4

4 に答える 4

2

残念ながら、Ajax.BeginForm を使用してファイルをアップロードすることはできません。

  • uploadify のようなプラグインがあります

http://www.uploadify.com/forum/#/discussion/1685/uploadify-and-ajax/p1

  • またはこのjqueryプラグイン

http://malsup.com/jquery/form/

于 2013-02-21T04:53:24.700 に答える
2

もう 1 つの優れたアップローダ コンポーネントは PlUpload です

http://www.plupload.com/

します:

  • ファイルアップローダーをチャックしたので、大きなファイルをアップロードできます。例: 100Mb
  • クライアント側でのファイルのスケーリング
  • ドラッグ アンド ドロップでファイルを選択

参考までに、PlUpload からの投稿要求を処理する .NET のサーバー側コード:

var chunk = Request.Form["chunk"] != null ? int.Parse(Request.Form["chunk"]) : 0;

var fileName = Request.Form["name"] ?? "";

//open a file, if our chunk is 1 or more, we should be appending to an existing file, otherwise create a new file
var fs = new FileStream(Server.MapPath("/files/" + fileName), chunk == 0 ? FileMode.OpenOrCreate : FileMode.Append);

//write our input stream to a buffer
var buffer = new Byte[Request.Files[0].InputStream.Length];
Request.Files[0].InputStream.Read(buffer, 0, buffer.Length);

//write the buffer to a file.
fs.Write(buffer, 0, buffer.Length);
fs.Close();

独自のコンポーネントを開発したい場合は、最新のブラウザーで利用可能なファイル システム API を確認してください。ファイルコンテンツのバイナリを取得し、AJAX 呼び出しを使用してアップロードできます

于 2013-02-21T05:10:40.043 に答える
0

[HttpPost] public JsonResult UploadImage(HttpPostedFileWrapper imageFile) {

        if (imageFile == null || imageFile.ContentLength == 0 || imageFile.ContentLength > 205168)
        {

            return new JsonResult
            {
                ContentType = "text/html",
                Data = "No file was uploaded."

            };
        }

        if (imageFile == null || imageFile.ContentLength == 0 || (imageFile.ContentType != "image/png" && imageFile.ContentType != "image/jpg" && imageFile.ContentType != "image/jpeg" && imageFile.ContentType != "image/pjpeg"))
        {
            return new JsonResult
            {
                ContentType = "text/html",
                Data = "Type"
            };
        }
        if (Session["CityId"] != null)
        {
            if (MdlNadal == null)
            {
                MdlNadal = new mdlNadal();
            }
            string strFilePaths = "";

            int CityId = Convert.ToInt32(Session["CityId"].ToString());
            string strCityName = "";
            if (Session["CityName"] != null)
            {
                strCityName = Session["CityName"].ToString();
            }

            string strFileNames = imageFile.FileName.Replace(@"\", "/");
            string imgPath = ConfigurationManager.AppSettings["ImagePath"].ToString().Replace("~", "");
            strFileNames = strFileNames.Split('/')[strFileNames.Split('/').Length - 1];
            Session["ImageName"] = strFileNames;
            ViewBag.ImageName = strFileNames;
            strFilePaths = Request.Url.Scheme + "://" + Request.Url.Authority + imgPath + strCityName + "" + CityId + "/" + strFileNames;
            MdlNadal.UpdateCityImageByCityID(CityId, strFilePaths);
            if (imageFile != null)
            {
                if (!Directory.Exists(Server.MapPath(Url.Content(ConfigurationManager.AppSettings["ImagePath"].ToString() + strCityName + "" + CityId))))
                {
                    Directory.CreateDirectory(Server.MapPath(Url.Content(ConfigurationManager.AppSettings["ImagePath"].ToString() + strCityName + "" + CityId)));
                }
                else
                {
                    int counts = Directory.GetFiles(Server.MapPath(Url.Content(ConfigurationManager.AppSettings["ImagePath"].ToString() + strCityName + "" + CityId))).Count();
                    if (counts > 1)
                    {
                        string[] StrArr = Directory.GetFiles(Server.MapPath(Url.Content(ConfigurationManager.AppSettings["ImagePath"].ToString() + strCityName + "" + CityId)));
                        for (int i = 0; i <= counts - 1; i++)
                        {
                            string strFileNameCheck = StrArr[i];
                            //strFileNameCheck = strFileNameCheck.Replace(@"\", "/");
                            //strFileNameCheck = strFileNameCheck.Split('/')[strFileNameCheck.Split('/').Length - 1];
                            try
                            {
                                System.IO.File.Delete(strFileNameCheck);
                            }
                            catch (Exception ex)
                            {
                                throw ex;
                            }

                        }
                    }
                }
                var FilePath = Path.Combine(Server.MapPath(Url.Content(ConfigurationManager.AppSettings["ImagePath"].ToString() + strCityName + "" + CityId)), strFileNames);
                imageFile.SaveAs(FilePath);
            }

        }

        return new JsonResult
        {
            ContentType = "text/html",
            Data = "Save"

        };
    }

@using (Html.BeginForm("UploadImage", "Nadal", FormMethod.Post, new { enctype = "multipart/form-data", id = "mws-Validate", target = "UploadTarget", @class = "mws -形" })) {

                    <label class="title10">
                        <strong>Choose a background for this city</strong>
                    </label>                                             
                    <div class="mws-form-item large">
                        <input type="file" name="imageFile" id="imageFile" onchange="return SetAttachFlag();" />
                        (Supported File Types : .jpg, .jpeg, .png) (Maximum Size: 200 Kb)
                        <iframe id="UploadTarget" name="UploadTarget" onload="UploadImage_Complete();" style="position: absolute;
                            left: -999em; top: -999em;"></iframe>
                    </div>

                }
于 2013-02-21T06:42:06.620 に答える
0

HTML5 の File API を利用してみませんか。これらのリンクを見て、正しい方向に進んでください。

http://www.html5rocks.com/en/tutorials/file/dndfiles/

http://timothypoon.com/blog/2011/05/10/ajax-uploading-with-html5s-file-api/

于 2013-02-21T11:00:56.553 に答える