You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					65 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					65 lines
				
				1.6 KiB
			| 
											3 years ago
										 | 'use strict' | ||
|  | 
 | ||
|  | const fastify = require('fastify')() | ||
|  | const fs = require('fs') | ||
|  | const util = require('util') | ||
|  | const path = require('path') | ||
|  | const { pipeline } = require('stream') | ||
|  | const pump = util.promisify(pipeline) | ||
|  | const form = path.join(__dirname, '..', 'form.html') | ||
|  | 
 | ||
|  | fastify.register(require('..')) | ||
|  | 
 | ||
|  | fastify.get('/', function (req, reply) { | ||
|  |   reply.type('text/html').send(fs.createReadStream(form)) | ||
|  | }) | ||
|  | 
 | ||
|  | fastify.post('/upload/stream/single', async function (req, reply) { | ||
|  |   const data = await req.file() | ||
|  |   await pump(data.file, fs.createWriteStream(data.filename)) | ||
|  |   reply.send() | ||
|  | }) | ||
|  | 
 | ||
|  | fastify.post('/upload/stream/single-buf', async function (req, reply) { | ||
|  |   for await (const part of req.parts()) { | ||
|  |     if (part.file) { | ||
|  |       await part.toBuffer() | ||
|  |       console.log(part) | ||
|  |     } | ||
|  |   } | ||
|  |   reply.send() | ||
|  | }) | ||
|  | 
 | ||
|  | fastify.post('/upload/stream/files', async function (req, reply) { | ||
|  |   const parts = req.files() | ||
|  |   for await (const part of parts) { | ||
|  |     await pump(part.file, fs.createWriteStream(part.filename)) | ||
|  |   } | ||
|  |   reply.send() | ||
|  | }) | ||
|  | 
 | ||
|  | fastify.post('/upload/raw/any', async function (req, reply) { | ||
|  |   const parts = req.parts() | ||
|  |   for await (const part of parts) { | ||
|  |     if (part.file) { | ||
|  |       await pump(part.file, fs.createWriteStream(part.filename)) | ||
|  |     } else { | ||
|  |       console.log(part) | ||
|  |     } | ||
|  |   } | ||
|  |   reply.send() | ||
|  | }) | ||
|  | 
 | ||
|  | fastify.post('/upload/files', async function (req, reply) { | ||
|  |   // stores files to tmp dir and return paths
 | ||
|  |   const files = await req.saveRequestFiles() | ||
|  |   console.log(files.map(f => f.filepath)) | ||
|  |   // tmp files cleaned up automatically
 | ||
|  |   reply.send() | ||
|  | }) | ||
|  | 
 | ||
|  | fastify.listen({ port: 3000 }, err => { | ||
|  |   if (err) throw err | ||
|  |   console.log(`server listening on ${fastify.server.address().port}`) | ||
|  | }) |