zoukankan      html  css  js  c++  java
  • WebApi FormData+文件长传 异步+同步实现

     // POST api/values
            public async Task Post()
            {
                try
                {
                    // 检查该请求是否含有multipart/form-data
                    if (!Request.Content.IsMimeMultipartContent())
                    {
                        throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
                    }
                    // 方法一
                    System.Web.HttpFileCollection file = System.Web.HttpContext.Current.Request.Files;
                    if (file.Count > 0)
                    {
                        //文件名  
                        string name = file[0].FileName;
                        //保存文件  
                        string path = HttpContext.Current.Server.MapPath("~/") + name;
                        file[0].SaveAs(path);
                    }
    
                    Dictionary<string, string> dicFormData = new Dictionary<string, string>();
                    foreach (var key in System.Web.HttpContext.Current.Request.Form.AllKeys)
                    {
                        //接收FormData  
                        dicFormData.Add(key, System.Web.HttpContext.Current.Request.Form[key]);
                    }
    
                    // 方法二
                    Dictionary<string, string> dic = new Dictionary<string, string>();
                    string root = HttpContext.Current.Server.MapPath("~/App_Data");//指定要将文件存入的服务器物理位置  
                    var provider = new MultipartFormDataStreamProvider(root);
                    // Read the form data.  
                    await Request.Content.ReadAsMultipartAsync(provider);
    
                    // This illustrates how to get the file names.  
                    foreach (MultipartFileData file1 in provider.FileData)
                    {//接收文件  
                        Trace.WriteLine(file1.Headers.ContentDisposition.FileName);//获取上传文件实际的文件名  
                        Trace.WriteLine("Server file path: " + file1.LocalFileName);//获取上传文件在服务上默认的文件名  
                    }
                    foreach (var key in provider.FormData.AllKeys)
                    {//接收FormData  
                        dic.Add(key, provider.FormData[key]);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
  • 相关阅读:
    Java基础06 组合
    纸上谈兵: 树, 二叉树, 二叉搜索树
    Java基础05 实施接口
    纸上谈兵: 队列 (queue)
    纸上谈兵: 数学归纳法, 递归, 栈
    Java基础01 从HelloWorld到面向对象
    纸上谈兵: 表 (list)
    Java基础02 方法与数据成员
    纸上谈兵: 排序算法简介及其C实现
    纸上谈兵: 栈 (stack)
  • 原文地址:https://www.cnblogs.com/chuancheng/p/9807942.html
Copyright © 2011-2022 走看看