zoukankan      html  css  js  c++  java
  • WEB API 使用MultipartFormDataStreamProvider上传文件(转)

    简短教程中我们打算如何上传多个文件在 ASP.Net WebAPI 使用 MultipartFormDataStreamProvider概念基于部分/格式数据我们可以在这里发布多个文件内容不仅 NameValueCollection 作为服务器提供常规表单字段教程中我们看到如何重写默认行为MultipartFormDataStreamProvider名称存储一个独特的 BodyPart_ {GUID} 格式中

    适合手机端服务图片接口,支持多个文件(.NET Framework 4.5以上)笔记

    [HttpPost]
            public async Task<HttpResponseMessage> PostSaveImg()
            {
                if (!Request.Content.IsMimeMultipartContent())
                {
                    throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
                }
    
                // Prepare CustomMultipartFormDataStreamProvider in which our multipart form  
                // data will be loaded.  
                string fileSaveLocation = HttpContext.Current.Server.MapPath("~/UploadImages");
                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);
    
                    foreach (MultipartFileData file in provider.FileData)
                    {
                        //files.Add(Path.GetFileName(file.LocalFileName));
                        string orfilename = file.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"');
                        FileInfo fileinfo = new FileInfo(file.LocalFileName);
                        string fileExt = orfilename.Substring(orfilename.LastIndexOf('.'));
                        //定义允许上传的文件扩展名 
                        String fileTypes = "gif,jpg,jpeg,png,bmp";
                        if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(fileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1)
                        {
                            files.Add("Incorrect image format");
                        }
                        else
                        {
                            String ymd = DateTime.Now.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
                            String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", System.Globalization.DateTimeFormatInfo.InvariantInfo);
                            fileinfo.CopyTo(Path.Combine(fileSaveLocation, newFileName + fileExt), true);
                            fileinfo.Delete();
                            files.Add("http://192.168.1.129/UploadImages/" + newFileName + fileExt);
                        } 
                    }
    
                    // Send OK Response along with saved file names to the client.  
                    return Request.CreateResponse(HttpStatusCode.OK, files);
                }
                catch (System.Exception e)
                {
                    return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
                }  
            }
    
            public class CustomMultipartFormDataStreamProvider : MultipartFormDataStreamProvider
            {
                public CustomMultipartFormDataStreamProvider(string path) : base(path) { }
    
                public override string GetLocalFileName(HttpContentHeaders headers)
                {
                    return headers.ContentDisposition.FileName.Replace("\"", string.Empty);
                }
            }  

    原文参考地址:http://blog.csdn.net/greystar/article/details/44562715

    成功的路上并不拥挤,因为坚持的人并不多!!!
  • 相关阅读:
    海康视频 rtnp转 flv
    生成随机不重复数列表(C#)
    保证应用程序只运行一个实例[c#]
    [C++] C++指针的那些事 常量,变量,指针及指针相关的三个数值
    C#压缩与解压缩流类 GZipStream 的使用
    [C# WinFrom 使用 Google Map] 在地图上画轨迹线
    一个泛型应用示例
    没五笔,不写了
    利用Socket HTTP协议获得HTML代码方法
    Remoting实例(客户端发送信息)
  • 原文地址:https://www.cnblogs.com/back/p/5632208.html
Copyright © 2011-2022 走看看