2013-12-23 12 views
15

このアプリ/ルート/ index.jsにおける私のアップロード方法である:フォームアップロード

exports.uploadFile = function(req, res) { 
var multiparty = require('multiparty'); 
var gm = require('gm'); 
var fs = require('fs'); 
var form = new multiparty.Form(); 
var size = ''; 
var fileName = ''; 
form.on('part', function(part){ 
    if(!part.filename) return; 
    size = part.byteCount; 
    fileName = part.filename; 
}); 
form.on('file', function(name,file){ 
    console.log(file.path); 
    console.log(__dirname); 
    console.log('filename: ' + fileName); 
    console.log('fileSize: '+ (size/1024)); 
    var tmp_path = file.path 
    var target_path = __dirname + '/uploads/fullsize/' + fileName; 
    var thumbPath = __dirname + '/uploads/thumbs/'; 
    fs.renameSync(tmp_path, target_path, function(err) { 
     if(err) console.error(err.stack); 
    }); 
    res.redirect('/uploads/fullsize/' + fileName); 
     console.log(target_path); 
    /*gm(tmp_path) 
     .resize(150, 150) 
     .noProfile() 
     .write(thumbPath + 'small.png', function(err) { 
      if(err) console.error(err.stack);  
     });*/ 
}); 
form.parse(req); 

}。私がアップロードフォームからファイルをアップロードする際

は私が

app.post('/uploadFile', routes.uploadFile); 

としてapp.jsからこのメソッドを呼び出して、コンソールにこのエラーメッセージが表示されます。

/tmp/9039-1m6kw46.jpg 
/home/danyaloff/Development/nodejs/projects/nodetest1/routes 
filename: 3D-Background-Wallpapers-HD-Wallpapers-in-HD.jpg 
fileSize: 910.255859375 

fs.js:543 
    return binding.rename(pathModule._makeLong(oldPath), 
      ^
    Error: ENOENT, no such file or directory '/tmp/9039-1m6kw46.jpg' 
    at Object.fs.renameSync (fs.js:543:18) 
    at Form.<anonymous> (/home/danyaloff/Development/nodejs/projects/nodetest1/routes/index.js:25:6) 
at Form.EventEmitter.emit (events.js:98:17) 
at WriteStream.<anonymous> (/home/danyaloff/Development/nodejs/projects/nodetest1/node_modules/multiparty/index.js:527:10) 
at WriteStream.EventEmitter.emit (events.js:117:20) 
at fs.js:1596:14 
at Object.oncomplete (fs.js:107:15) 
23 Dec 03:52:59 - [nodemon] app crashed - waiting for file changes before starting... 

を私はしてアップロード機能を使用する場合私のapp.jsファイル:

app.post('/uploadFile', function(req, res){ 
    //my upload function 
}); 

すべてが完璧です。私のコードの問題は何ですか?どうも!

答えて

7

問題を使用した後に解決されています

var target_path = './uploads/fullsize/' + fileName; 

代わりの

var target_path = __dirname + '/uploads/fullsize/' + fileName; 
関連する問題