फ़ाइलों को अपलोड करना
प्रासंगिक एपीआई संदर्भ: File, @FormField, @UploadedFile, और @UploadedFiles।
रनटाइम अपलोड मिडलवेयर इंस्टॉल करें
के लिए Express:
npm install multer
npm install -D @types/multerpnpm add multer
pnpm add -D @types/multeryarn add multer
yarn add -D @types/multerके लिए Koa:
npm install @koa/multerpnpm add @koa/multeryarn add @koa/multerउपयोग करना @UploadedFile / @UploadedFiles सजावट
अंतर्निहित अपलोड सजावटकर्ता उपयोग करते हैं tsoa-nextनिर्यात File इंटरफ़ेस। उपयोग @FormField() गैर फ़ाइल multipart क्षेत्रों है कि अपलोड के साथ आने के लिए।
import { Controller, File, FormField, Post, Route, UploadedFile, UploadedFiles } from 'tsoa-next'
@Route('files')
export class FilesController extends Controller {
@Post('single')
public async uploadSingle(@FormField() title: string, @UploadedFile('asset') asset: File): Promise<{ title: string; originalName: string }> {
return {
title,
originalName: asset.originalname,
}
}
@Post('many')
public async uploadMany(@UploadedFiles('assets') assets: File[]): Promise<{ count: number }> {
return {
count: assets.length,
}
}
}डिफ़ॉल्ट भंडारण व्यवहार
उत्पन्न Express और Koa जब आप अपलोड सजावट का उपयोग करते हैं तो रूट डिफ़ॉल्ट मल्टर उदाहरण बनाते हैं। डिफ़ॉल्ट रूप से यह है कि उदाहरण स्मृति में अपलोड फ़ाइलों को रखता है।
यदि आप एक कस्टम मल्टीटर कॉन्फ़िगरेशन द्वारा डिस्क या संभालना चाहते हैं, तो अपने स्वयं के मल्टीटर उदाहरण को पास करें RegisterRoutes(...)।
कस्टम multer विन्यास
Express उदाहरण:
import express, { json, urlencoded } from 'express'
import multer from 'multer'
import { RegisterRoutes } from '../build/routes'
const app = express()
app.use(urlencoded({ extended: true }))
app.use(json())
RegisterRoutes(app, {
multer: multer({ dest: 'uploads/' }),
})Koa उदाहरण:
import Router from '@koa/router'
import multer from '@koa/multer'
import { RegisterRoutes } from '../build/routes'
const router = new Router()
RegisterRoutes(router, {
multer: multer({ dest: 'uploads/' }),
})एक विरासत शीर्ष स्तर भी है multerOpts में विन्यास क्षेत्र tsoa.jsonलेकिन यह deprecated है। एक ठोस multer उदाहरण पारित करने के लिए RegisterRoutes(...)।
मैनुअल multipart हैंडलिंग
यदि आप बायपास करना चुनते हैं @UploadedFile(...) और अपने आप को एक नियंत्रक के अंदर बुलाओ @Request(), आप यह भी दस्तावेज करने के लिए जिम्मेदार हैं कि अनुरोध खुद को आकार दें। उस मामले में, बहुपक्षीय अनुरोध विवरण को मर्ज करें spec.spec में tsoa.json इसलिए उत्पन्न OpenAPI दस्तावेज़ अभी भी सही ढंग से समापन बिंदु का वर्णन करता है।
