(ファイルアップロード)HttpPostedFileクラスとHttpPostedFileBaseクラス


簡単なファイルアップロードコードは以下の通りです:Example(例):
/Controllers/AdminController.cs
 [HttpGet]
        public ActionResult NewsAdd(string name)
        {//     QQ :683782676
            //               
            List lt = tb.FindTopicAll(null);
            //           
            SelectList sl = new SelectList(lt, "tid", "tname");
            //            IEnumerable 
            ViewBag.DropDownListDataSouces = sl.AsEnumerable();
            return View();
        }
        [HttpPost]
        public ActionResult NewsAdd(HttpPostedFileBase image, NewsModel news/*,string name*/)
        {
            //string outStr = string.Format("  :{0},     :{1},     :{2}", image.ContentLength,                 image.ContentType, image.FileName);
            //Console.WriteLine(outStr);

            //1           
            string path = Server.MapPath("~/upload/");
            //2            
            string fileName = image.FileName.Substring(image.FileName.LastIndexOf("."));
            fileName = DateTime.Now.ToLongDateString() + "-" + new Random().Next() + fileName;

            //DateTime.Now.ToFileTimeUtc();

            //3                  
            path += fileName;
            //4     
            image.SaveAs(path);
            //5                          
            news.nfile = path;

            //    
            NewsModel nm = new NewsModel()
            {
                nid = Guid.NewGuid(),
                tid = news.tid,
                title = news.title,
                author = news.author,
                summary = news.summary,
                ncontent = news.ncontent,
                nfile = news.nfile,
                ndate = DateTime.Now
            };
            if (nb.AddNews(nm) > 0)
            {
                return RedirectToAction("NewsAdmin");
            }
            else
            {
                Response.Write("alert('    !!!');");
                return View();
            }
        }

/Views/Admin/NewsAdd.cshtml
@model News.Model.NewsModel
@{
    ViewBag.Title = "NewsAdd";
    Layout = "~/Views/Shared/_AdminLayout.cshtml";
}

@using (Html.BeginForm("NewsAdd", "Admin",FormMethod.Post,new { enctype = "multipart/form-data" })) {

@Html.LabelFor(model => model.tid):  @Html.DropDownList("tid", ViewBag.DropDownListDataSouces as IEnumerable, " ")

@Html.LabelFor(model => model.title): @Html.TextBoxFor(model => model.title)

@Html.LabelFor(model => model.author): @Html.TextBoxFor(model => model.author)

@Html.LabelFor(model => model.summary): @Html.TextAreaFor(model => model.summary, new { cols = "40", rows = "3" })

@Html.LabelFor(model => model.ncontent): @Html.TextAreaFor(model => model.ncontent, new { cols = "70", rows = "10" })

@Html.LabelFor(model => model.nfile): 

}

回転:
あなたが见た时、あなたはすでにそれを好きになったのではないでしょうか.もしあなたが本当に外见だけを见ていたら、あなたは间违っています.自分の目をあまり信じないでください.よくあなたが见たほど简単ではありません.私と一緒に見てください.
今回のプロジェクトでは、この問題に遭遇しました.最初は本当に関係があると思っていましたが、偽物ではありませんでした.
「リソースサーバに画像をアップロードする」というアップロードの問題が発生しました.最初は考えていませんでしたが、コードは以下の通りです.
public bool UploadFTP(HttpPostedFileBase file, string strFileType, int iFileLength, int Width, int Height, string Path, ref string strInfo)
{
   ............. //     
}

これでもう通用すると思っていたのに、HttpPostedFileの相手を直接伝えたときに間違えました.答えはHttpPostedFileとHttpPostedFileBaseには関係がありません.
だから私は夜に探しに行って、調べて、やっと良い解決策を見つけました.実はそれらは橋HttpPostedFileWrapperクラスを通じて変換することができます.HttpPostedFileWrapper:HttpPostedFileBase、HttpPostedFileWrapperのコードは以下の通りです.
public class HttpPostedFileWrapper : HttpPostedFileBase
{
        //   :
        //         System.Web.HttpPostedFileWrapper      。
        //
        //   :
        //   httpPostedFile:
        //                 。
        //
        //   :
        //   System.ArgumentNullException:
        //     httpApplicationState   null。
        public HttpPostedFileWrapper(HttpPostedFile httpPostedFile);
}

最後の解決策は以下の通りである:public bool UploadFTP(HttpPostedFile,string strFileType,int iFileLength,int Width,int Height,string Path,ref string strInfo){//参考資料QQ群:683782676 HttpPostedFileBase hpfb=new HttpPostedFileWrapper(file)as HttpPostedFileBase;return UploadFTP(hpfb, strFileType, iFileLength, Width, Height, Path, ref strInfo); }