netcore 上传文件
一般上传文件可以用formdata的文件格式将你要上传的文件和其他参数放在一个类里面 例如:
public class uploadItemFile
{
public int id { get; set; }
public FormFile uploadFile { get; set; }
}
文件接收的类如下:
[Consumes("multipart/form-data")]
[HttpPost, Route("ItemPlanUploadFile")]
public ResponseResult ItemPlanUploadFile([FromForm] uploadItemFile uploadItemFile)
{
try
{
//var file = HttpContext.Request.Form.Files.FirstOrDefault(f => f.Name == "uploadFile");
var reFlie=HttpContext.Request.Form.Files;
if(reFlie==null)
return new ResponseResult(false, "操作失败:文件未上传", false);
var itemFile=_context.goodsmg_item_files.FirstOrDefault(f => f.item_plan_id == uploadItemFile.item_plan_id);
string path = AppDomain.CurrentDomain.BaseDirectory + "\\files\\" + "plan" + "\\";
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
var extension_name = reFlie[0].FileName.Split('.')[1];// formFile?.FileName.Split('.')[1];
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "." + extension_name;
string savepath = path + fileName;
string remothpath = "//files//plan//" + fileName;
FileStream fs = new FileStream(savepath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
var r = ReadFileBytes(reFlie[0]);
fs.Write(r, 0, r.Length);
fs.Close();
if (itemFile!=null)
{
_context.Attach(itemFile);
itemFile.remote_path = remothpath;
itemFile.source_path = savepath;
itemFile.extension_name = "." + extension_name;
itemFile.file_name = reFlie[0].FileName;
_context.SaveChanges();
}
else
{
goodsmg_item_file goodsmg_Item_File = new goodsmg_item_file();
goodsmg_Item_File.item_plan_id = uploadItemFile.item_plan_id;
goodsmg_Item_File.remote_path = remothpath;
goodsmg_Item_File.source_path = savepath;
goodsmg_Item_File.extension_name = "." + extension_name;
goodsmg_Item_File.file_name = reFlie[0].FileName;
_context.Entry(goodsmg_Item_File).State = EntityState.Added;
_context.SaveChanges();
}
return new ResponseResult(true, "操作成功", true);
}
catch (Exception ex)
{
LogUtils.Exception(ex);
return new ResponseResult(false, ex.Message, false);
}
}
/// <summary>
/// 文件流类型转化字节类型
/// </summary>
/// <param name="fileData">表单文件信息</param>
/// <returns></returns>
private byte[] ReadFileBytes(IFormFile fileData)
{
byte[] data;
using (Stream inputStream = fileData.OpenReadStream())//读取上传文件的请求流
{
MemoryStream memoryStream = inputStream as MemoryStream;
if (memoryStream == null)
{
memoryStream = new MemoryStream();
inputStream.CopyTo(memoryStream);
}
data = memoryStream.ToArray();
}
return data;
}
多个文件接收的时候可以通过HttpContext.Request.Form.Files.FirstOrDefault(f=>f.Name== "answer_img")这种方式获取对应的文件
如果前端直接展示图片可以通过base64的格式返回给前端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix