C#?Web實(shí)現(xiàn)文件上傳的示例詳解
1.第一種上傳方式,基本通用于.net所有的框架
[HttpPost]
[Route("Common/uploadFile1")]
public string uploads()
{
HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//獲取傳統(tǒng)context
HttpRequestBase request = context.Request;//定義傳統(tǒng)request對(duì)象
HttpFileCollectionBase files = request.Files;
string fileSuffix = Path.GetExtension(files[0].FileName).ToLower();
string fileId = Guid.NewGuid().ToString();
string dateKey = DateTime.Now.ToString("yyyyMMdd");
string savaPath, uri;
uri = @"/fileData/rest/" + dateKey + @"/";
savaPath = request.MapPath(uri);
if (!Directory.Exists(savaPath))
{
Directory.CreateDirectory(savaPath);
}
try
{
files[0].SaveAs(savaPath + fileId + fileSuffix);
return uri + fileId + fileSuffix;
}catch (Exception ex){
return ex.Message;
}
}
2.WebAPI可以用這個(gè)來(lái),但是在低一點(diǎn)的版本沒(méi)有IFormFile 這個(gè)對(duì)象
/// <summary>
/// 通用文件上傳接口
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
[HttpPost]
[Route("Common/uploadFile2")]
public async Task<Axios<string>> upload(IFormFile file)
{
string fileSuffix = Path.GetExtension(file.FileName).ToLower();
string fileId = Guid.NewGuid().ToString();
string dateKey = DateTime.Now.ToString("yyyyMMdd");
string savaPath,uri;
uri = @"/fileData/rest/" + dateKey + @"/";
savaPath = Path.Combine(Directory.GetCurrentDirectory(), uri);
if (!Directory.Exists(savaPath)){Directory.CreateDirectory(savaPath);}
//創(chuàng)建特定名稱的文件流
await using var stream = new FileStream(savaPath + fileId + fileSuffix, FileMode.Create);
try
{
//上傳文件
await file.CopyToAsync(stream);
stream.Flush();
return Axios<string>.ok(uri + fileId + fileSuffix);
} catch (Exception ex) {
//上傳異常處理
return Axios<string>.fail(ex.Message);
}


3.上傳方式,可以用于.netCore MVC方式的文件上傳
[HttpPost]
public JsonResult uploadX(HttpPostedFileBase file)
{
String suffix = file.FileName.Substring(file.FileName.LastIndexOf(".", StringComparison.Ordinal));
string fileName = Guid.NewGuid().ToString().Replace("-", "") + suffix;
string uri = string.Format("{0}/{1}/{2}/", "fileData", "rest", DateTime.Now.Year+""+DateTime.Now.Month +""+ DateTime.Now.Day);
string filePath = Server.MapPath(string.Format("~/{0}",uri));
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
file.SaveAs(Path.Combine(filePath, fileName));
return Json(uri + fileName);
}
注:以上就是三種文件上傳的方式,可以采用第一種方式,兼容性好
到此這篇關(guān)于C# Web實(shí)現(xiàn)文件上傳的示例詳解的文章就介紹到這了,更多相關(guān)C#文件上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#搜索TreeView子節(jié)點(diǎn),保留父節(jié)點(diǎn)的方法
這篇文章主要介紹了C#搜索TreeView子節(jié)點(diǎn),保留父節(jié)點(diǎn)的方法,實(shí)例分析了C#操作TreeView節(jié)點(diǎn)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
Unity3D使用Shader實(shí)現(xiàn)腐蝕消失
這篇文章主要為大家詳細(xì)介紹了Unity3D使用Shader實(shí)現(xiàn)腐蝕消失,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02

