Angular问题-上传文件之前后端开发

Angular问题-上传文件之前后端开发

问题描述:需要在前端上传文件之后在后端储存在当前系统运行环境中。
解决方案:

第一种情况

此时文件路径没有多级情况,可以通过FormData传递

//前端代码
//由于IFormFile 不能反序列化,所以不能将文件放入对象中
const formData = new FormData();
    this.fileList.forEach((file: any) => {
      formData.append('Files', file);
    })
    this.httpClient.post<any>(environment.apiServerURL + "DDiligence/EditData", formData).subscribe({
      next: (res) => {
        console.log(res);
        if (res != null) {
        }
      },
      error: (err) => {
        console.error(err);
      }
    });
后端代码
如果是FileList 类型为 IFormFile[]
单个文件 IFormFile
    [HttpPost]
    public ActionResult<UpdateDDModel> Add(IFormFile[]  FileList)
    {
       	//写入系统运行环境
       	//文件要存放的路径
       	string FilePath = Path.Combine(Environment.CurrentDirectory,  DateTime.Now.ToString("yyyy/MM/dd"));
       	//此时需要去判断该路径是否存在,不存在时写入会有问题
       	if (!Directory.Exists(FilePath))
            {
                Directory.CreateDirectory(FilePath);
            }
       	Files.ToList().ForEach(file =>
        {
            string saveFilePath = Path.Combine(FilePath, file.FileName);
            using (var fileStream = new FileStream(saveFilePath, FileMode.Create))
            {
            //使用文件流进行写入
                file.CopyTo(fileStream);
            };
        });
    }

第二种清空

当文件存在多级结构,需要将文件放入到对象中去一一对应时,
此时可以后端通过FormForm来进行接受。
前端将文件写入到FormData中,对象需要转换为JSON

//文件写入方式与第一种一样
//增加一种对象转为JSON,但是 文件不可放入到对象中进行转JSON
this.formData.set('DD_Stage_List', JSON.stringify(Object))
	///后段接受
	//RequestDDData 中定义参数的类型
	   	public string? DD_Stage_List { get; set; }
   		public IList<IFormFile>? Kick_Off_File { get; set; }

	 [HttpPost]
    public ActionResult<UpdateDDModel> Update([FromForm] RequestDDData request)
    {
        文件操作不变
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值