.net core 基於multipart/form-data的文件上傳,這裏以圖片上傳爲例

首先傳遞的數據格式大概以下:數據庫

而後就能夠在後端獲取數據了:直接上代碼了哈:json

[HttpPost]        ///分別獲取 data數據和調用圖片上傳方法
public async Task<JsonResult> UploadDefault()
{
var data =Request.Form["data"];
var dataPosition=GetSortModel(data);  //json反序列化爲 list型
BootstrapFileResult res = await UploadCommonAsync(); //圖片上傳並返回  圖片id
var picid = res.ImgId;
PicandPoint user = new PicandPoint();
user.LevelId = dataPosition[0].id;
user.PositionX = dataPosition[0].positionX;
user.PositionY = dataPosition[0].positionY;
user.FotoId = picid;
JsonResult result = await CreatePoint(user);
return result;
}後端

 

[HttpPost]     ////將文件保存到指定路徑,而後在存到數據庫dom

public async Task<BootstrapFileResult> UploadCommonAsync()
{
////var data = Request.Form["data"];
var files = Request.Form.Files;
var baseDir = _options.ImgDir;
var res = new BootstrapFileResult();
var now = DateTime.Now;
if (!Directory.Exists(baseDir))
{
Directory.CreateDirectory(baseDir);
}
for (int i = 0; i < files.Count; ++i)
{
var newnamere = "";
var file = files[i];async

var imgid = 0;
try
{
var orgName = file.FileName;
var newName = GetRandomFileName(orgName);
newnamere = newName;
imgid = await _indexer.StoreImageRecord(orgName, newnamere);orm

var filePath = baseDir + "/" + newName;
using (var stream = new FileStream(filePath, FileMode.Create))
{
await file.CopyToAsync(stream);  //將圖片寫到指定文件夾
}
var bitmap = new ImageSharp.Image(file.OpenReadStream());
var width = bitmap.Width;
var height = bitmap.Height;
await _indexer.UpdateImageDataEx(imgid, width, height);
}
catch (Exception e) { continue; }


res.ImgId = imgid;blog

}圖片

return res;
}ci

 

///這個方法是將獲取到的 data爲stringvalue類型數據轉化爲list型:string

private List<UpPoint> GetSortModel(string sortModel) { List<UpPoint> list = new List<UpPoint>(); if (sortModel == null) { return list; } string array = $"[{sortModel}]"; var deserialized = JsonConvert.DeserializeObject<List<UpPoint>>(array); return deserialized; }

相關文章
相關標籤/搜索