js图片上传 多图上传

以react为背景,先写上传的input

// multiple 属性控制单选或多选 
<input type='file' multiple accept=".png,.jpg,.jpeg,.gif" onChange={(e)=>{

                   	   // 建一个FormData对象
                       const formData = new FormData()
                       
                       // 这里是多选 遍历下 e.target.files
                       e.target.files.forEach(item=>{
                       	// append方法:append(key,value) key是可以重复的,不会被覆盖
                       	// 把图片都用append方法加到formData中,'file'是后台接收图片的参数,由后端定义
                           formData.append('file',item)
                       })
                       // 如果有需要,还可以加上一些其它的参数,比如token
                       formData.append('token','a23ce9sne0sn2nds256')
                       // 如果需要传一个json形式的数据
						const data = {type:1}
						const json = JSON.stringify(data)
						const blob = new Blob([json], {type: 'application/json'});
						formData.append('data',blob)
						
                       // 所需参数都好了,可以调用接口,这里注意 formData 直接传进去,不要用对象再包一层
                       UploadImg(formData).then(res=>{
                           console.log(res,'rerer');
                           
                       })
                    
                }} />

上传方法


const UploadImg = (data)=>{
	//request是封装的请求方法 
	request('https://upload.com',{
		methods:'post',
		data,
		headers: { 'Content-Type': 'multipart/form-data' },// Content-Type 一定要设置成 multipart/form-data
		//onUploadProgress 可以监控上传进度,主要是计算loaded和total这两个属性,有需要可以添加
		onUploadProgress:(e)=>{
			console.log(e.loaded/e.total,'上传进度')
		}
	})
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 `multer` 库来上传多张图片。以下是在 NestJS 中使用 `multer` 实现多张图片上传的示例代码: 1. 安装 `multer` 库: ``` npm install --save multer ``` 2. 在控制器中导入 `multer` 库: ``` import { Controller, Post, UploadedFiles, UseInterceptors } from '@nestjs/common'; import { FilesInterceptor } from '@nestjs/platform-express'; import { diskStorage } from 'multer'; import { editFileName } from './utils/file-upload.utils'; ``` 3. 创建一个上传文件的中间件: ``` export const multerOptions = { storage: diskStorage({ destination: './uploads', filename: editFileName, }), }; ``` 4. 创建一个上传文件的工具类: ``` export const editFileName = (req, file, callback) => { const name = file.originalname.split('.')[0]; const fileExtName = extname(file.originalname); const randomName = Array(4) .fill(null) .map(() => Math.round(Math.random() * 16).toString(16)) .join(''); callback(null, `${name}-${randomName}${fileExtName}`); }; ``` 5. 在控制器中使用 `@UseInterceptors()` 装饰器来启用 `FilesInterceptor` 中间件: ``` @Controller('upload') export class UploadController { @Post() @UseInterceptors(FilesInterceptor('files', 20, multerOptions)) async uploadMultipleFiles(@UploadedFiles() files) { console.log(files); const response = []; files.forEach((file) => { const fileReponse = { originalname: file.originalname, filename: file.filename, }; response.push(fileReponse); }); return response; } } ``` 6. 在路由中注册控制器: ``` import { Module } from '@nestjs/common'; import { UploadController } from './upload.controller'; @Module({ controllers: [UploadController], }) export class UploadModule {} ``` 这样,你就可以通过 POST 请求上传多张文件。在这个示例中,上传的文件将被保存在 `./uploads` 目录下。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值