WebAPI图片批量上传+修改图片名称
来源:互联网 发布:131458淘宝卖家工具箱 编辑:程序博客网 时间:2024/04/30 07:10
前言: 这几天在做一个图片上传的API,在网上找了很多资料,也学到了很多东西,最近刚接触WebAPI,好多东西都看不懂。 还停留在webfrom的概念, 哈哈 其实webfrom也没学好,废话不多说了,先看代码。
public async Task<HttpResponseMessage> PostUpload(string Token, int Part) { if (Global.checkToken(Token)) //验证口令通过 { // Check whether the POST operation is MultiPart? if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } // Prepare CustomMultipartFormDataStreamProvider in which our multipart form // data will be loaded. string partFolder = string.Empty; switch (Part) { case 1: partFolder = "MobileUploadImages_BaoGao"; break; case 2: partFolder = "MobileUploadImages_ShenQing"; break; case 3: partFolder = "MobileUploadImages_RenWu"; break; default: partFolder = "MobileUploadImages_QiTa"; break; } string fileSaveLocation = HttpContext.Current.Server.MapPath("~/"+ImageUploadPublic.FoldersAddress+"/"+partFolder); if (!Directory.Exists(fileSaveLocation)) Directory.CreateDirectory(fileSaveLocation); CustomMultipartFormDataStreamProvider provider = new CustomMultipartFormDataStreamProvider(fileSaveLocation); List<string> files = new List<string>(); try { // Read all contents of multipart message into CustomMultipartFormDataStreamProvider. await Request.Content.ReadAsMultipartAsync(provider); string newFileName = string.Empty; foreach (MultipartFileData file in provider.FileData) { newFileName = Path.GetFileName(file.LocalFileName); files.Add(newFileName); } return Request.CreateResponse(HttpStatusCode.OK, files); } catch (System.Exception e) { return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e); } } else { string ResCode = "0002", Msg = "口令错误"; Dictionary<string, object> obj = new Dictionary<string, object>(); obj.Add("ResCode", ResCode); obj.Add("Msg", Msg); return Request.CreateResponse(HttpStatusCode.OK, obj); } }
public class CustomMultipartFormDataStreamProvider : MultipartFormDataStreamProvider { public CustomMultipartFormDataStreamProvider(string path) : base(path) { } public override string GetLocalFileName(HttpContentHeaders headers) { //修改图片名称并返回 string newFileName = string.Empty; newFileName = Path.GetExtension(headers.ContentDisposition.FileName.Replace("\"", string.Empty));//获取后缀名 newFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(0, 99999) + newFileName; return newFileName; } }上面两块代码就能实现图片批量上传功能, 下面是测试接口的代码:
static void Main(string[] args) { using (var client = new HttpClient()) using (var content = new MultipartFormDataContent()) { // Make sure to change API address client.BaseAddress = new Uri("http://localhost:18110/"); // Add first file content var fileContent1 = new ByteArrayContent(File.ReadAllBytes(@"C:\Users\y\Desktop\testImgUpload\wokechakandehuibao.jpg")); fileContent1.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "wokechakandehuibao.jpg" }; // Add Second file content var fileContent2 = new ByteArrayContent(File.ReadAllBytes(@"C:\Users\y\Desktop\testImgUpload\xiezhoubaoFasongrenyuan.jpg")); fileContent2.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "xiezhoubaoFasongrenyuan.jpg" }; content.Add(fileContent1); content.Add(fileContent2); // Make a call to Web API var result = client.PostAsync("/WebAppErpUser/PostUpload?Token=000000&Part=1", content).Result; //HttpContent hc = result.Content; result.Content.ReadAsStringAsync().ContinueWith((str) => { Console.WriteLine(str.Result); });//输出上传的图片名称(修改后的) Console.WriteLine(result.StatusCode); Console.ReadLine(); } }
其实网上有很多上传图片的web api 代码,只是没有找到适合我的,结果到头来找到这段代码基本实现了我的需求,所以就用这个了,然后自己再改吧改吧,就这样了。
这一段代码是我在网上找的,具体在哪个网站找的我也忘了,其中添加了修改图片名称的功能,其他没啥,只为复制代码的同学提供方便。
注:如果原创者看到了这个博文,请原谅我没有记住你的名字,请原谅我没有收藏你的博客。
1 0
- WebAPI图片批量上传+修改图片名称
- 批量修改商品图片名称
- 考试系统维护-批量修改图片名称
- 考试系统维护-批量修改图片名称
- 考试系统维护-批量修改图片名称
- 批量修改图片名称的快捷方法
- webapi 带参数上传图片
- ASP.NET WebApi 图片上传
- 批量更改图片名称
- ECShop重命名上传图片名称及修改图片存储路径
- 上传图片、批量上传图片
- 批量修改文件下的图片或视频名称
- shell脚本(一)批量修改图片名称
- 批量上传图片
- 批量上传不同图片
- 图片批量上传 swfupload
- 批量上传图片
- struts2图片批量上传
- 简述Activity的启动流程(界面显示)
- 高斯模糊算法
- error MS8020 Build tools v140 cannot be found解决办法
- Javascript飘窗代码
- cydiaSubstrate hook java/native 研究记录
- WebAPI图片批量上传+修改图片名称
- 当前时间显示
- android测试框架对比(一)
- 浙大 PAT Advanced level 1015. Reversible Primes (20)
- 小型数据的缓存
- eclipse中修改启动tomcat时的jvm参数
- poj1273 Drainage Ditches
- android BroadCast的发送与接收
- Android中intent传递list或者对象的方法