gpt4 book ai didi

node.js - 使用 NodeJS 进行多部分文件上传

转载 作者:IT老高 更新时间:2023-10-28 23:10:36 24 4
gpt4 key购买 nike

我在上传文件以使用 NodeJS 时遇到问题。我正在使用 Dropzone.JS 创建一个向/file-upload 发送 POST 请求的表单:

<form action="/file-upload" class="dropzone dragndrop" id="my-awesome-dropzone"></form> 

然后我在 app.js 中有一个路由:

app.post('/file-upload', routes.upload);

然后是我的处理程序:

exports.upload = function(req, res){
console.log(req.files);
res.send("OK");
}

但是,这里的上传函数永远不会被调用。服务器首先因此错误而崩溃:

events.js:69
throw arguments[1]; // Unhandled 'error' event
^
Error: Invalid data
at WriteStream._write (fs.js:1616:31)
at onwrite (_stream_writable.js:265:14)
at WritableState.onwrite (_stream_writable.js:94:5)
at fs.js:1628:5
at Object.wrapper [as oncomplete] (fs.js:475:5)
at process._makeCallback (node.js:321:24)

所以我不确定我应该做什么,因为这似乎不是我的错。我遵循了其他教程,并没有发现任何问题。此外,当我在 chrome 开发工具下检查我的网络时,它显示:

Request URL:http://localhost:3000/file-upload
**Request Headers**
Accept:application/json
Cache-Control:no-cache
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryMmLSkbfQskfIcjfE
Origin:http://localhost:3000
Pragma:no-cache
Referer:http://localhost:3000/
User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17
X-File-Name:Screenshot from 2013-03-20 12:23:42.png
X-Requested-With:XMLHttpRequest
**Request Payload**
------WebKitFormBoundaryMmLSkbfQskfIcjfE
Content-Disposition: form-data; name="file"; filename="Screenshot from 2013-03-20 12:23:42.png"
Content-Type: image/png


------WebKitFormBoundaryMmLSkbfQskfIcjfE--

最佳答案

@user568109 和@nick-fishman 是正确的;您应该为此使用 bodyParser 中间件。

请参阅下面的基本文件上传表单的示例代码。 (注意:您需要创建一个“上传”目录来存储文件。)

文件上传.js:

var express = require("express"),                                                                
app = express();

// tell express to use the bodyParser middleware
// and set upload directory
app.use(express.bodyParser({ keepExtensions: true, uploadDir: "uploads" }));
app.engine('jade', require('jade').__express);

app.post("/upload", function (request, response) {
// request.files will contain the uploaded file(s),
// keyed by the input name (in this case, "file")

// show the uploaded file name
console.log("file name", request.files.file.name);
console.log("file path", request.files.file.path);

response.end("upload complete");
});

// render file upload form
app.get("/", function (request, response) {
response.render("upload_form.jade");
});

app.listen(3000);

views/upload_form.jade:

doctype 5
html
head
title Upload Form
body
h1 Upload File
form(method="POST", action="/upload", enctype="multipart/form-data")
input(type="file", name="file")
input(type="submit")

关于node.js - 使用 NodeJS 进行多部分文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16534892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com