1

有没有办法在不重定向到 /upload 路径的情况下使用强大的功能?

正如在网上和文档中找到的..

HTML

<form action="/upload" enctype="multipart/form-data" method="post">
   <input type="file" name="file">
   <input type="submit" value="Upload">
</form>

表示

 var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
  console.log(87987)
  console.log(files)
  console.log(files.file)
    // `file` is the name of the <input> field of type `file`
    var old_path = files.file.path,
        file_size = files.file.size,
        file_ext = files.file.name.split('.').pop(),
        index = old_path.lastIndexOf('/') + 1,
        file_name = old_path.substr(index),
        new_path = path.join(process.env.PWD, 'public/uploads/', file_name + '.' + file_ext);

    fs.readFile(old_path, function(err, data) {
        fs.writeFile(new_path, data, function(err) {
            fs.unlink(old_path, function(err) {
                if (err) {
                    res.status(500);
                    res.json({'success': false});
                } else {
                    res.status(200);
                    res.json({'success': true});
                }
            });
        });
    });
});

图像上传到文件夹中,但由于表单元素中的“action = '/upload'”属性,我被重定向到 /uploads 路径。

我想留在同一页面上,但是当我尝试更改“动作”值时,我无法将图像发送到服务器

4

1 回答 1

0

使用res.redirect或删除action表单中的属性以发布到当前页面。

http://expressjs.com/api.html#res.redirect

如果您删除action要发布到当前页面的属性,那么您必须添加一个路由来表达该页面以处理post请求

http://expressjs.com/api.html#app.route

action如果您在删除该属性时遇到问题,请尝试使用action="?"发布到当前页面。

于 2015-02-20T02:35:03.097 回答