1. 程式人生 > >Web Api Self Host大檔案上傳功能

Web Api Self Host大檔案上傳功能

Web Api 多檔案上傳功能

還是直接貼程式碼比較直觀

       /// <summary>
        /// 多檔案上傳介面
        /// </summary>
        /// <returns></returns>
        public async Task<IHttpActionResult> Upload(string jobid)
        {
            List<Resource> resources = new List<Resource>();
            // multipart/form-data  
// 採用MultipartMemoryStreamProvider var provider = new MultipartMemoryStreamProvider(); //讀取檔案資料 await Request.Content.ReadAsMultipartAsync(provider); foreach (var item in provider.Contents) { // 判斷是否是檔案 if
(item.Headers.ContentDisposition.FileName != null) { //獲取到流 var ms = item.ReadAsStreamAsync().Result; //進行流操作 using (var br = new BinaryReader(ms)) { if (ms.Length <= 0
) break; //讀取檔案內容到記憶體中 var data = br.ReadBytes((int)ms.Length); //Create //當前時間作為ID Resource resource = new Resource() { Id = DateTime.Now.ToString("yyyyMMddHHmmssffff", DateTimeFormatInfo.InvariantInfo) }; //Info FileInfo info = new FileInfo(item.Headers.ContentDisposition.FileName.Replace("\"", "")); //檔案型別 resource.Type = info.Extension.Substring(1).ToLower(); //Write try { //檔案儲存地址 string dirPath = Path.Combine(ROOT_PATH); if (!Directory.Exists(dirPath)) { Directory.CreateDirectory(dirPath); } File.WriteAllBytes(Path.Combine(dirPath, resource.Id), data); resources.Add(resource); } catch { } } } } //返回 if (resources.Count == 0) return BadRequest(); else if (resources.Count == 1) return Ok(resources.FirstOrDefault()); else return Ok(resources); }