日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

.net mvc web api上传图片/文件并重命名

發(fā)布時(shí)間:2023/12/18 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net mvc web api上传图片/文件并重命名 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

#region 上傳圖片
/// <summary>
/// 上傳圖片到服務(wù)器 當(dāng)error為0時(shí)成功,為1時(shí)失敗 并從errmsg獲取消息
/// </summary>
/// <returns></returns>
public Task<Hashtable> post()
{
String PhoneId = null;

// 檢查是否是 multipart/form-data
if (!Request.Content.IsMimeMultipartContent("form-data"))
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
//文件保存目錄路徑
//string SaveTempPath = "~/App_Data/";
//System.String dirTempPath = HttpContext.Current.Server.MapPath(SaveTempPath);
System.String dirTempPath = @"C:\picture";
// 設(shè)置上傳目錄
var provider = new MultipartFormDataStreamProvider(dirTempPath);
//var queryp = Request.GetQueryNameValuePairs();//獲得查詢字符串的鍵值集合

//接受數(shù)據(jù)并保存文件
var task = Request.Content.ReadAsMultipartAsync(provider).
ContinueWith<System.Collections.Hashtable>(o =>
{
Hashtable hash = new Hashtable();


hash["error"] = 1;
hash["errmsg"] = "上傳出錯(cuò)";
var file = provider.FileData[0];//provider.FormData

string orfilename = file.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"');
FileInfo fileinfo = new FileInfo(file.LocalFileName);
//判斷拿到的PhoneId
PhoneId = provider.FormData["PhoneId"];

if (string.IsNullOrEmpty(PhoneId.Trim()) || PhoneId.Trim().Length == 0)
{
hash["error"] = 1;
hash["errmsg"] = "未上傳PhoneId";
fileinfo.Delete(); //如果不寫(xiě)這句你會(huì)發(fā)現(xiàn) 返回的數(shù)據(jù)是正常的 但文件依舊會(huì)Down下來(lái)
return hash;
}
//最大文件大小
int maxSize = 10000000;
if (fileinfo.Length <= 0)
{
hash["error"] = 1;
hash["errmsg"] = "請(qǐng)選擇上傳文件。";
fileinfo.Delete();
return hash;
}
else if (fileinfo.Length > maxSize)
{
hash["error"] = 1;
hash["errmsg"] = "上傳文件大小超過(guò)限制。";
fileinfo.Delete();
return hash;
}
else
{
string fileExt = orfilename.Substring(orfilename.LastIndexOf('.'));
//定義允許上傳的文件擴(kuò)展名
String fileTypes = "gif,jpg,jpeg,png,bmp";
if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(fileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1)
{
hash["error"] = 1;
hash["errmsg"] = "上傳文件擴(kuò)展名是不允許的擴(kuò)展名。";
fileinfo.Delete();
return hash;
}
else
{
string path = @"picture\" + PhoneId + ".jpg";
try
{
if (modelusers.updatePicture(PhoneId, path) != 1)
{
hash["error"] = 1;
hash["errmsg"] = "更新數(shù)據(jù)庫(kù)失敗";
fileinfo.Delete();
return hash;
}


}
catch (Exception ex)
{
hash["error"] = 1;
hash["errmsg"] = "更新數(shù)據(jù)庫(kù)失敗2";
fileinfo.Delete();
return hash;

}
String ymd = DateTime.Now.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
//String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", System.Globalization.DateTimeFormatInfo.InvariantInfo);
String newFileName = PhoneId;
fileinfo.CopyTo(Path.Combine(dirTempPath, newFileName + fileExt), true);
fileinfo.Delete();


hash["error"] = 0;
hash["errmsg"] = "上傳成功";
}
}
return hash;
});

return task;
}
#endregion
值得注意的幾點(diǎn):
- 當(dāng)上傳成功時(shí),error值為0。失敗時(shí),error為1并從errmsg中獲取失敗消息。
- 在文件路徑處偷了個(gè)懶直接把文件的路徑塞上去了,如果是從當(dāng)前路徑下放文件的話,請(qǐng)遵循注釋。
- PhoneId = provider.FormData[“PhoneId”];這句拿到你應(yīng)該上傳的文件名,根據(jù)你的需求修改
- 如果不進(jìn)行重新命名的話,文件會(huì)有默認(rèn)命名值,并且沒(méi)有后綴名。這是因?yàn)镸VC4.0 WebAPI上傳后的圖片默認(rèn)以字符串bodypart結(jié)合Guid來(lái)命名,且沒(méi)有文件后綴
- fileinfo.Delete();如果不寫(xiě)這句你會(huì)發(fā)現(xiàn) 返回的數(shù)據(jù)是失敗的 但文件依舊會(huì)Down下來(lái) 這是因?yàn)槲募谝婚_(kāi)始執(zhí)行的時(shí)候就已經(jīng)保存下來(lái)了,所以在失敗后你應(yīng)該將他刪除。

接下來(lái)是我自己寫(xiě)的簡(jiǎn)單測(cè)試代碼,各位再寫(xiě)完接口時(shí)要自己多測(cè)試測(cè)試,塞一些異常數(shù)據(jù)進(jìn)去,看看是否能夠正常運(yùn)行,不要等到后期出問(wèn)題了再反過(guò)頭去修改。

<html>

<form action="這里寫(xiě)接口url" method="post" enctype="multipart/form-data">

<input type="file" name="file">

<hr>
<input type="text" name="PhoneId" id="PhoneId">
<hr>
<input type="submit" value="submit" id="btnPutUserInfo">


</form>
</html>
---------------------
作者:Morning-Wind
來(lái)源:CSDN
原文:https://blog.csdn.net/zch501157081/article/details/51540854
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!

轉(zhuǎn)載于:https://www.cnblogs.com/ztf20/p/10083323.html

總結(jié)

以上是生活随笔為你收集整理的.net mvc web api上传图片/文件并重命名的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。