您的位置:首页 > Web前端 > Node.js

nodejs 上传文件 express-fileupload

2017-09-27 14:46 357 查看

express-fileupload

Version 0.1.0 Breaking Changes!

No more urlencoded support

As of
v0.1.0
, there is NO MORE
application/x-www-form-urlencoded
SUPPORT! Moving forward, express-fileupload is considered a "multipart" solution only.If you want to parse
urlencoded
requests, use body-parser.

No more support for < Node.js v4

No more support for versions of Node older than v4. Use with lower versions of Node at your own risk!

Install

# With NPM npm install --save express-fileupload # With Yarn yarn add express-fileupload

Usage

When you upload a file, the file will be accessible from
req.files
.

Example Scenario

You're uploading a file called car.jpg

Your input's name field is foo:
<input name="foo" type="file" />


In your express server request, you can access your uploaded file from
req.files.foo
:

app.post('/upload', function(req, res) {  console.log(req.files.foo); // the uploaded file object});
The req.files.foo object will contain the following:
req.files.foo.name
: "car.jpg"

req.files.foo.mv
: A function to move the file elsewhere on your server

req.files.foo.mimetype
: The mimetype of your file

req.files.foo.data
: A buffer representation of your file

Full Example

Your node.js code:
const express = require('express');const fileUpload = require('express-fileupload');const app = express(); // default optionsapp.use(fileUpload()); app.post('/upload', function(req, res) {  if (!req.files)    return res.status(400).send('No files were uploaded.');   // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file  let sampleFile = req.files.sampleFile;   // Use the mv() method to place the file somewhere on your server  sampleFile.mv('/somewhere/on/your/server/filename.jpg', function(err) {    if (err)      return res.status(500).send(err);     res.send('File uploaded!');  });});
Your HTML file upload form:
<html>  <body>    <form ref='uploadForm'       id='uploadForm'       action='http://localhost:8000/upload'       method='post'       encType="multipart/form-data">        <input type="file" name="sampleFile" />        <input type='submit' value='Upload!' />    </form>       </body></html>

Uploading Multiple Files

express-fileupload supports multiple file uploads at the same time.Let's say you have three files in your form, each of the inputs with the name
my_profile_pic
,
my_pet
, and
my_cover_photo
:
<input type="file" name="my_profile_pic" /><input type="file" name="my_pet" /><input type="file" name="my_cover_photo" />
These uploaded files would be accessible like so:
app.post('/upload', function(req, res) {  // Uploaded files:  console.log(req.files.my_profile_pic.name);  console.log(req.files.my_pet.name);  console.log(req.files.my_cover_photo.name);});

Using Busboy Options

Pass in Busboy options directly to the express-fileupload middleware. Check out the Busboy documentation here.
app.use(fileUpload({  limits: { fileSize: 50 * 1024 * 1024 },}));

Available Options

Pass in non-Busboy options directly to the middleware. These are express-fileupload specific options.
optionacceptable valuesdetails
safeFileNames
false
(default)

true


regex

Strips characters from the upload's filename. You can use custom regex to determine what to strip. If set to
true
, non-alphanumeric characters except dashes and underscores will be stripped. This option is off by default.

Example #1 (strip slashes from file names):
app.use(fileUpload({ safeFileNames: /\\/g }))

Example #2:
app.use(fileUpload({ safeFileNames: true }))
preserveExtension
false
(default)

true


Number


Preserves filename extension when using
safeFileNames
option. If set to
true
, will default to an extension length of 3. If set to
Number
, this will be the max allowable extension length. If an extension is smaller than the extension length, it remains untouched. If the extension is longer, it is shifted.

Example #1 (true):
app.use(fileUpload({ safeFileNames: true, preserveExtension: true }));

myFileName.ext --> myFileName.ext

Example #2 (max extension length 2, extension shifted):
app.use(fileUpload({ safeFileNames: true, preserveExtension: 2 }));

myFileName.ext --> myFileNamee.xt


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息