2016-06-24 10 views
0

ノードjを使用して画像をサーバーにアップロードする必要があります。画像はiosアプリケーションからファイルデータとして送信されます。ノードJs画像アップロードが動作しない

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

は、サーバー内のファイルの書き込み権限の問題になる可能性が –

+0

FSとしてみてください.move –

+0

TypeError:fs.​​moveは取得している関数ではありません。権限の問題を確認する方法。 –

答えて

2

受信した画像をURLとして書き込むことはできません。
アプリケーションを実行しているサーバー上のローカルパスである必要があります。また

fs.readFile(req.files.displayImage.path, function (err, data) { 
    // ... 
    var newPath = __dirname + "/uploads/uploadedFileName"; 
    fs.writeFile(newPath, data, function (err) { 
    res.redirect("back"); 
    }); 
}); 

は、()(名前の変更で)その新しいパスにイメージを再書き込みが、代わりにそれを移動しないでください:

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"); 
    }); 
}); 
関連する問題