(ファイルアップロード)HttpPostedFileクラスとHttpPostedFileBaseクラス
5764 ワード
簡単なファイルアップロードコードは以下の通りです:Example(例):
/Controllers/AdminController.cs
/Views/Admin/NewsAdd.cshtml
回転:
あなたが见た时、あなたはすでにそれを好きになったのではないでしょうか.もしあなたが本当に外见だけを见ていたら、あなたは间违っています.自分の目をあまり信じないでください.よくあなたが见たほど简単ではありません.私と一緒に見てください.
今回のプロジェクトでは、この問題に遭遇しました.最初は本当に関係があると思っていましたが、偽物ではありませんでした.
「リソースサーバに画像をアップロードする」というアップロードの問題が発生しました.最初は考えていませんでしたが、コードは以下の通りです.
これでもう通用すると思っていたのに、HttpPostedFileの相手を直接伝えたときに間違えました.答えはHttpPostedFileとHttpPostedFileBaseには関係がありません.
だから私は夜に探しに行って、調べて、やっと良い解決策を見つけました.実はそれらは橋HttpPostedFileWrapperクラスを通じて変換することができます.HttpPostedFileWrapper:HttpPostedFileBase、HttpPostedFileWrapperのコードは以下の通りです.
最後の解決策は以下の通りである: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); }
/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";
}
回転:
あなたが见た时、あなたはすでにそれを好きになったのではないでしょうか.もしあなたが本当に外见だけを见ていたら、あなたは间违っています.自分の目をあまり信じないでください.よくあなたが见たほど简単ではありません.私と一緒に見てください.
今回のプロジェクトでは、この問題に遭遇しました.最初は本当に関係があると思っていましたが、偽物ではありませんでした.
「リソースサーバに画像をアップロードする」というアップロードの問題が発生しました.最初は考えていませんでしたが、コードは以下の通りです.
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); }