在我看来,我选择了一张图片。在我的控制器中,我有一个名为
的函数 uploadImage: function (req, res){}
我有这一行req.file ('photofile').upload (.....
所以现在我的问题是..如何将此图像从我的视图传递给控制器?这样我就可以从req
看到它了吗?
答案 0 :(得分:1)
我假设您有一条绑定到uploadImage
功能的路线。如果没有,您可以使用express
:
var app = require('express')();
app.post('/your/upload/route', uploadImage);
如果您想从视图中上传文件,您有两种选择:
<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');
}
}