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
						
					
					
				| '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}`)
 | |
| })
 |