uniapp多文件上传

1.前端代码:

uploadFilePromise(arr) {
				let files=arr.map((value,index)=>{
				 return{
				 name:value.name,
				 uri:value.path
				 }
				 });
				return new Promise((resolve, reject) => {
					let uploadTask  = uni.uploadFile({
						url: url_config+'/app/common/v_uploadattachfile.do', 
						files:files,
						// filePath: url,
						// name: 'file',
						// formData: {
						// 	id: 'test'
						// },
						success: (res) => {
							console.log("res",res)
							setTimeout(() => {
								resolve(JSON.parse(res.data))
							}, 1000)
						},
						fail:(e) => {
							uni.$u.toast("上传失败,请重新上传")
						}
					});
					
				})
			}

2.后端代码:

  @RequestMapping(value = "/v_uploadfile.do", method = RequestMethod.POST)
    public ReturnMsg uploadFile(HttpServletRequest request) throws Exception {
        String content = "content-type";
        ReturnMsg msgEntity = new ReturnMsg();
        List<AttachFile> files = new ArrayList<>();
        // 将请求转换成
        MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
        /**
         * 获取上传的文件列表
         */
        Iterator<String> fns = mRequest.getFileNames();
        while (fns.hasNext()) {
            String s = fns.next();
            MultipartFile mFile = mRequest.getFile(s);
            if (mFile != null) {
                /**
                 * 文件名称
                 */
                String originFileName = mFile.getName();
                /**
                 * 存储目录
                 */
                // 会议附件存储目录
                String basePath = request.getSession().getServletContext().getRealPath(Constants.FILE);
                File dir = new File(basePath);
                if (!dir.exists()) {
                    dir.mkdirs();
                }
                // 后缀名
                String suffixName = originFileName.substring(originFileName.lastIndexOf(".") + 1);
                // 随机文件名称
                String randomId = Constants.createUUIDKey();
                String randomName = randomId + "." + suffixName;
                File file = new File(basePath + "/", randomName);
                try {
                    if (!file.exists()) {
                        file.createNewFile();
                    }
                    /**
                     * 存储复制文件
                     */
                    FileUtils.copyInputStreamToFile(mFile.getInputStream(), file);
                    /**
                     * 文件拷贝完成后,执行存库操作
                     */
                    try {
                        AttachFile attachFile = new AttachFile();
                        attachFile.setAttachId(Constants.createUUIDKey());
                        attachFile.setAttachName(originFileName);
                        attachFile.setAttachPath(randomName);
                        attachFiles.add(attachFile);
                    } catch (Exception ex) {
                        logger.error("上传失败:" + ex);
                        return msgEntity.fail();
                    }
                } catch (Exception e) {
                    logger.error("上传失败:" + e);
                    return msgEntity.fail();
                }
            }
        }
        logger.info("上传附件成功!");
        return msgEntity.success(attachFiles);
    }

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用UniApp进行多文件上传时,你可以使用uni.uploadFile方法来实现。以下是一个示例代码: ```javascript // 定义一个函数来处理文件上传 function uploadFiles(files) { return new Promise((resolve, reject) => { const uploadTasks = [] // 遍历文件列表,并将每个文件上传 for (let i = 0; i < files.length; i++) { const file = files[i] // 使用uni.uploadFile方法上传文件 const uploadTask = uni.uploadFile({ url: 'https://example.com/upload', // 上传接口地址 filePath: file.path, // 文件路径 name: 'file', // 后端接收文件的字段名 formData: { // 可以额外传递一些参数 user: 'username', type: 'image' }, success: (res) => { // 文件上传成功的回调 console.log('文件上传成功', res.data) resolve(res.data) }, fail: (err) => { // 文件上传失败的回调 console.error('文件上传失败', err) reject(err) } }) uploadTasks.push(uploadTask) } // 执行所有文件上传任务 Promise.all(uploadTasks).then((results) => { console.log('所有文件上传完成', results) resolve(results) }).catch((err) => { console.error('文件上传出错', err) reject(err) }) }) } // 调用uploadFiles函数来上传文件 const filesToUpload = [ { path: 'path/to/file1.jpg' }, { path: 'path/to/file2.png' }, { path: 'path/to/file3.txt' } ] uploadFiles(filesToUpload).then((results) => { // 所有文件上传完成后的回调 console.log('所有文件上传成功', results) }).catch((err) => { // 文件上传出错的回调 console.error('文件上传出错', err) }) ``` 请注意,示例中的URL仅作为示例,你需要将其替换为你实际的上传接口地址。另外,你可以根据需要修改formData中的参数来传递额外的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值