gpt4 book ai didi

node.js - 通过nodejs和express使用 "vaadin file upload"( polymer )时出错

转载 作者:太空宇宙 更新时间:2023-11-03 22:12:35 24 4
gpt4 key购买 nike

我正在尝试使用 vaadin 文件上传元素上传一个简单的文件(请参阅 https://vaadin.com/elements/-/element/vaadin-upload )

我使用nodejs和express与multer作为服务器端的中间件。

nodejs简化代码如下:

var express =   require("express");
var multer = require('multer');
var app = express();
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
}
});
var upload = multer({ storage : storage}).single('userPhoto');

app.get('/',function(req,res){
res.sendFile(__dirname + "/index.html");
});

app.post('/api/photo',function(req,res){
upload(req,res,function(err) {
if(err) {
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
});

我尝试在 index.html 中使用 HTML 元素,并且此代码有效

<form id        =  "uploadForm"
enctype = "multipart/form-data"
action = "/api/photo"
method = "post"
>
<input type="file" name="userPhoto" />
<input type="submit" value="Upload Image" name="submit">
</form>

但我想使用 vaadin 上传元素。代码是我写的

<link rel="import" href="../bower_components/vaadin-upload/vaadin-upload.html">

<vaadin-upload id="userPhoto" target="/api/photo"></vaadin-upload>

当我使用它时,它没有按预期工作。我能够看到 vaadin 元素。但我无法上传文件。当我选择文件时,服务器响应字符串“上传文件时出错”。我对polymerjs 和网络开发还很陌生。有人可以指出我哪里出错了吗?

最佳答案

在后端代码中,您必须将文件参数名称从 'userPhoto' 更改为至'file' .

对于 native HTML 表单,它会在 name 声明的参数中发送一个文件。 <input type="file"> 的属性.

使用 Vaadin Upload 元素时,文件的发送方式与 HTML 表单相同。但不是提供的 name ,它们在名为 "file" 的参数中发送.

请注意,您有 id="userPhoto"上传的属性。 id是一个不同的属性,它的作用与name不同。 .

遗憾的是,目前无法轻松自定义上传请求的文件参数名称。我们计划将来添加更多上传请求自定义功能。

关于node.js - 通过nodejs和express使用 "vaadin file upload"( polymer )时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37537488/

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