GOOGLE ADS

среда, 13 апреля 2022 г.

NestJS загружает несколько файлов с помощью GraphQL

Я пытался загрузить несколько файлов с помощью 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

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...