我需要使用节点js将图像上传到服务器。图像来自ios app作为文件数据。我使用了以下代码,
var fs = require("fs");
var imageName = req.files.profile_image.name;
fs.readFile(req.files.profile_image.path, function (err, data) {
console.log(imageName);
// If there's an error
if(!imageName){
console.log("There was an error")
//res.redirect("/");
//res.end();
} else {
console.log(data);
var newPath = 'http://example.com/images/' + imageName;
// write file to uploads/fullsize folder
fs.writeFile(newPath, data, function (err) {
// let's see it
console.log(err);
//res.redirect("http://example.com/images/" + imageName);
});
}
});
当我运行此代码时,我没有收到任何错误,但图像未上传到图像文件夹中。
我在fs.writeFile中遇到以下错误,
{ Error: ENOENT: no such file or directory, open 'http://example.com/images/user-profile.jpg'
at Error (native)
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: 'http://example.com/images/user-profile.jpg' }
请帮忙。
答案 0 :(得分:2)
你不能把你收到的图像写成网址。
它应该是运行应用程序的服务器上的本地路径。
fs.readFile(req.files.displayImage.path, function (err, data) {
// ...
var newPath = __dirname + "/uploads/uploadedFileName";
fs.rename(files.upload.path, _path +'/'+ img_name + '.png', function (error) {
res.redirect("back");
});
});
也不要将图像重新写入新路径,而是将其移动(使用rename()):
/* @var \Zend\Mvc\View\Http\RouteNotFoundStrategy $strategy */
$strategy = $this->getServiceLocator()->get('HttpRouteNotFoundStrategy');
$strategy->setNotFoundTemplate('application/other/404');
$view = new ViewModel();
//$view->setTemplate('application/other/404');
return $view;
答案 1 :(得分:-1)
在app.js中使用此
app.use('/ uploads',express.static('uploads'));