Nodejs将我的图像从视图上传到控制器

时间:2017-01-19 09:19:57

标签: javascript node.js upload

在我看来,我选择了一张图片。在我的控制器中,我有一个名为

的函数

uploadImage: function (req, res){}

我有这一行req.file ('photofile').upload (.....

所以现在我的问题是..如何将此图像从我的视图传递给控制器​​?这样我就可以从req看到它了吗?

1 个答案:

答案 0 :(得分:1)

我假设您有一条绑定到uploadImage功能的路线。如果没有,您可以使用express

创建它
var app = require('express')();
app.post('/your/upload/route', uploadImage);

如果您想从视图中上传文件,您有两种选择:

  • 使用简单的HTML <form><input type="file" />。您必须在<form>标记中添加以下属性:enctype="multipart/form-data"!你走了:
<form method="post" enctype="multipart/form-data">
    <input type="file" name="photofile" />
    <input type="submit" />
</form>
  • 使用/your/upload/route的异步调用作为POST请求,文件内容位于FormData对象中。在这个例子中,我使用jQuery($)作为依赖,我做一个AJAX调用,你可以根据需要进行调整。但请记住,请小心,因为所有/旧浏览器(list here)都不支持此解决方案:
<form onSubmit="upload()">
    <input id="image" type="file" />
    <input type="submit" />
</form>
function upload() {
    var inputFile = $('#image');
    if (inputFile.files[0]) { // Just checking if the user selected a file.
        var data = new FormData();
        data.append('photofile', inputFile.files[0]); // Add the file in the form data.

        $.ajax({ // Call your route
            url: '/your/upload/route', // The route to call
            data: data, // The FormData
            cache: false,
            contentType: false,
            processData: false,
            type: 'POST',
            success: function (data){
                console.log('Upload success!', data);
            },
            error: function (result, status, error){
                console.log('An error occurred.');
            }
        });
    } else {
        console.log('You didn\'t choose any image');
    }
}