套马杆的套子
套马杆的套子
  • 发布:2024-07-10 14:53
  • 更新:2024-07-11 11:06
  • 阅读:610

【报Bug】uni.uploadFile 上传多文件 files中name的问题

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 11

HBuilderX类型: 正式

HBuilderX版本号: 4.23

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: 全部

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
let header = {  
                    'Content-Type': 'multipart/form-data'  
                }  
                uni.uploadFile({  
                    // url: BASE_URL + options.url,  
                    url: 'http://192.168.0.130:9010/inspection/attach/test?aabbaa=' + "aaaaa",  
                    files: this.phoneImgs,  
                    method: 'POST',  
                    header: header,  
                    formData: {  
                        aaaa: "aaaaa"  
                    },  
                    success: ((res) => {  
                        console.log("上传文件", res)  

                    }),  
                    fail: (err) => {  
                        console.log(err)  

                        uni.showToast({  
                            title: '上传失败',  
                            icon: "error"  
                        })  

                    }  
                })

java代码

    @PostMapping("/test")  
    public void test(MultipartFile[] files, String address){  
        int aaaa =files.length;  
        String aa ="";  
    }

操作步骤:

每次都可以复现

预期结果:

可以上传多个

实际结果:

可以上传多个

bug描述:

demo测试上传多文件,files数组中,文档写如果 name 不填或填的值相同,可能导致服务端读取文件时只能读取到一个文件。
但是name填其他的,就读取不到文件了,只能填写和后台接收的名称一样的files,但是如果填files的话,实际上传了多个文件,但只能接收到一个文件

2024-07-10 14:53 负责人:DCloud_UNI_yuhe 分享
已邀请:
套马杆的套子

套马杆的套子 (作者) - 没有解决不了的问题,只有解决不完的问题

找个了解决办法,在java后台接收时,先别用MultipartFile[] files去接收了,用HttpServletRequest request去接收,
具体代码如下

@PostMapping("/test")  
    public void test( String address, HttpServletRequest request){  
        MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;  
        MultiValueMap<String, MultipartFile> multiFileMap = req.getMultiFileMap();  
        List<MultipartFile> fileList=new ArrayList<>();  
        multiFileMap.forEach((key, value) -> {  
            MultipartFile multipartFile= value.get(0);  
            fileList.add(multipartFile);  
        });  
    }

要回复问题请先登录注册