• 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>

  • 相关阅读:
    游戏开发中,常见的贴图压缩方式
    python包合集-shutil
    c++实现图书管理系统v1.0
    【021】基于springboot的党务管理系统(含管理员、用户党支部三种身份(附源码数据库)
    spring整合mybatis
    如何用思维导图做笔记
    为什么Redis默认序列化器处理之后的key会带有乱码?
    [R] Graphing the relation between two variables
    122. 买卖股票的最佳时机 II
    剑指YOLOv5改进主干RepViT系列: 最新重参数化结构|ICCV 2023 最新开源移动端网络架构 RepViT,1.3ms 延迟,速度贼快
  • 原文地址:https://blog.csdn.net/qq_58159494/article/details/133961246