public IActionResult UploadAttachment([FromForm] FileChunksModel model) { if (model.file == null) { return(BadRequest()); } if (model.chunked) { //var file = Request.Form.Files[0]; var file = model.file; //取得chunk和chunks int chunk = Convert.ToInt32(Request.Form["chunk"]); //当前分片在上传分片中的顺序(从0开始) int chunks = Convert.ToInt32(Request.Form["chunks"]); //总分片数 var folder = Path.Combine(_hostingEnvironment.WebRootPath, "chunk\\" + Request.Form["uid"] + "\\"); string path = folder + chunk; //建立临时传输文件夹 if (!Directory.Exists(Path.GetDirectoryName(folder))) { Directory.CreateDirectory(folder); } FileStream addFile = null; BinaryWriter AddWriter = null; Stream stream = null; BinaryReader TempReader = null; try { //addFile = new FileStream(path, FileMode.Append, FileAccess.Write); addFile = new FileStream(path, FileMode.Create, FileAccess.Write); AddWriter = new BinaryWriter(addFile); //获得上传的分片数据流 stream = model.file.OpenReadStream(); TempReader = new BinaryReader(stream); //将上传的分片追加到临时文件末尾 AddWriter.Write(TempReader.ReadBytes((int)stream.Length)); } finally { if (addFile != null) { addFile.Close(); addFile.Dispose(); } if (AddWriter != null) { AddWriter.Close(); AddWriter.Dispose(); } if (stream != null) { stream.Close(); stream.Dispose(); } if (TempReader != null) { TempReader.Close(); TempReader.Dispose(); } } return(Ok(new { nextchunk = chunk + 1 })); } else { // 文件大小 long size = 0; //var file = Request.Form.Files[0]; var filename = ContentDispositionHeaderValue.Parse(model.file.ContentDisposition).FileName; // 扩展名 var extName = filename.Substring(filename.LastIndexOf('.')).Replace("\"", ""); // 新文件名 string shortfilename = $"{Guid.NewGuid()}{extName}"; var filePath = Path.Combine(_hostingEnvironment.WebRootPath, shortfilename); //保存到绝对路径 // 设置文件大小 size += model.file.Length; // 创建新文件 using (FileStream fs = System.IO.File.Create(filePath)) { // 复制文件 model.file.CopyTo(fs); // 清空缓冲区数据 fs.Flush(); } return(Ok("上传完成!")); } }