• VUE、.NET多文件的上传、接收


    .NET多文件接收

    在.NET中文件的获取需要使用到IFormFile 接口,接口包括了几个方法和属性,我们需要使用到。

    方法:

    CopyTo(Stream)  将上传的文件的内容复制到流中。

    OpenReadStream()  打开请求流以读取上传的文件。

    属性:

    ContentDisposition  获取已上传文件的原始 Content-Disposition 标头。

    ContentType  获取已上传文件的原始 Content-Type 标头。

    FileName  从 Content-Disposition 标头获取文件名。

    Headers  获取已上传文件的标头字典。

    Length  获取文件长度(以字节为单位)。

    Name  从 Content-Disposition 标头获取表单字段名称。

    首先我们需要创建一个类OeEntity。

    1. public class OeEntity
    2. {
    3. public List Files { get; set; }
    4. }

    创建一个post请求接收一个OeEntity类。该请求将上传的文件全部保存到本地中,返回给前端保存的所有文件地址。

    1. [HttpPost]
    2. public object Cdd([FromForm] OeEntity m)
    3. {
    4. if (m == null) return "上传内容错误";
    5. var files = m.Files;
    6. if (!files.Any()) return "没有检测到上传数据";
    7. var NewDate = DateTime.Now;
    8. try
    9. {
    10. var FilesPath = $"E:/warm/warm/public/File/{NewDate:yyyyMMdd}/";
    11. //创建储存文件
    12. if (!Directory.Exists(FilesPath))
    13. {
    14. Directory.CreateDirectory(FilesPath);
    15. }
    16. if (files != null)
    17. {
    18. List<string> returnFile = new();
    19. foreach (var v in files)
    20. {
    21. var fileExtension = Path.GetExtension(v.FileName);//获取文件格式,拓展名
    22. var saveFilesName = v.FileName.Substring(0, v.FileName.LastIndexOf('.')) + "_" + NewDate.ToString("HHmmss") + fileExtension;//文件名
    23. using (var fs = System.IO.File.Create(FilesPath + saveFilesName))
    24. {
    25. v.CopyTo(fs);
    26. fs.Flush();
    27. }
    28. var completeFilePath = Path.Combine(FilesPath, saveFilesName);
    29. returnFile.Add(completeFilePath);
    30. }
    31. return new { res = "上传成功", returnFile };
    32. }
    33. else
    34. {
    35. return new JsonResult(new { isSuccess = false, resultMsg = "上传失败,未检测上传的文件信息~" });
    36. }
    37. }
    38. catch (Exception ex)
    39. {
    40. return new JsonResult(new { isSuccess = false, resultMsg = "文件保存失败,异常信息为:" + ex.Message });
    41. }
    42. }

    VUE多文件上传

    window.event.preventDefault()避免刷新

    我们需要使用FormData对象上传,将选择的文件内容循环压入到FormData中,需要注意请求头的配置。

    1. methods: {
    2. onNewfile() {
    3. window.event.preventDefault()
    4. if (this.$refs.Newfile.files.length == 0) {
    5. console.log("请选择文件!!!")
    6. } else {
    7. let newFiles=new FormData();
    8. for(var i=0;i<this.$refs.Newfile.files.length;i++){
    9. newFiles.append('Files',this.$refs.Newfile.files[i])
    10. }
    11. PostBdd(newFiles).then(res=>{
    12. console.log(res)
    13. }).catch(err=>{
    14. console.log(err)
    15. })
    16. }
    17. }
    18. }

    axios配置(片段)

    1. export function PostBdd(a) {
    2. return request({
    3. method: 'post',
    4. url: '/MyLogin/Cdd',
    5. headers: {
    6. // 'Content-Type': 'contentType:application/x-www-form-urlencoded'
    7. 'Content-Type': 'multipart/form-data'
    8. },
    9. data: a
    10. })
    11. }

    页面代码

    1. "onfiles">
    2. <input type="file" multiple="multiple" ref="Newfile" />
    3. <button @click="onNewfile">多文件上传button>

  • 相关阅读:
    【数据结构】哈夫曼编码与最优二叉树(哈夫曼树)
    [附源码]计算机毕业设计springboot在线招聘网站
    C语言系统化精讲(二):C语言初探
    Linux 基础 + Web 部署
    CSS Vue/RN 背景使用opacity,文字在背景上显示
    Springcloud之Sentinel服务容错
    MySQL根据备注查询表、字段
    计算机毕业论文微信小程序毕业设计SSM校园论坛+后台管理系统|前后分离VUE[包运行成功]
    【用MyEclipse2017创建一个Hibernate Web登录项目】
    完整攻防知识体系-你值得拥有
  • 原文地址:https://blog.csdn.net/qq_58159494/article/details/133961246