Я пытался загрузить несколько файлов с помощью Nestjs Graphql, но не могу..
этот код отлично работает с контроллером (Rest) именно в https://docs.nestjs.com/techniques/file-upload
@Post('upload')
@UseInterceptors(FilesInterceptor('files',saveImageToStorage))
uploadImages(@UploadedFiles() files:Array<Express.Multer.File>, @Req() req:Request):any{
return;
}
но он не может работать с Graphql, возможно, потому, что (FileInterceptor) не может работать с graphql, как я могу использовать этот код или таким образом с помощью graphql для загрузки нескольких изображений?
примечание: я пробовал много способов загрузить несколько изображений с помощью графа гнезда (с multer и с помощью graphql-upload), но все способы не увенчались успехом!
изображение-storage.ts
import { diskStorage } from "multer";
import { generate } from 'shortid';
import * as fs from 'fs';
//const FileType = require('file-type');
import path = require('path');
type validFileExtension = 'png' | 'jpg' | 'jpeg';
type validMimeType = 'image/png' | 'image/jpg' | 'image/jpeg';
const validFileExtensions: validFileExtension[] = ['png', 'jpg', 'jpeg'];
const validMimeTypes: validMimeType[] = ['image/png', 'image/jpg', 'image/jpeg'];
export const saveImageToStorage = {
storage:diskStorage({
destination:'./images',
filename:(req,file,cb)=>{
const fileExtension:string = path.extname(file.originalname);
const fileName:string = generate() + fileExtension
cb(null,fileName)
}
}),
fileFilter: (req, file, cb) => {
const allowedMimeTypes: validMimeType[] = validMimeTypes;
allowedMimeTypes.includes(file.mimetype)? cb(null,true): cb(null,false)
}
}
export const removeFile = (fullFilePath:string):void => {
try{
fs.unlinkSync(fullFilePath);
} catch(err) {
console.log(err);
}
}
Решение проблемы
Не могли бы вы предоставить код AppModule?
Вы пробовали это:
import { graphqlUploadExpress } from 'graphql-upload';
...
....
....
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(graphqlUploadExpress()).forRoutes('graphql');
}
}
и в ваших параметрах GraphQLModule:
uploads: false
Комментариев нет:
Отправить комментарий