2014-11-13 92 views
0

我試圖用jsftp將文件放到我的服務器上。每次運行我的代碼時,我都會得到寫入服務器的文件,但它有0個字節。我確定用戶:主機:等是正確的。使用jsftp上傳文件導致服務器上的文件大小爲零

這是代碼。

function uploadHours() { 
var jsftp = require("jsftp"); 

var ftp = new jsftp({ 
host: localStorage.host, 
port: Number(localStorage.port), // defaults to 21 
user: localStorage.user, // defaults to "anonymous" 
pass: localStorage.ftpPass // defaults to "@anonymous" 
}); 

ftp.auth(localStorage.user, localStorage.ftpPass, function(hadErr) { 
if (!hadErr) 
alert("auth succesfull") 
}); 
; 
ftp.put('C:/Program Files/Adobe/Adobe After Effects CC 2014/Support Files/Hours Tracker/index2.html', '/public_html/indexTester2.html', function(hadErr) { 
    if (!hadError) 
alert("File transferred successfully!"); 
}); 
} 

回答

1

我想我需要先閱讀文件。這是有用的。

var JSFtp = require("jsftp");  
var fs = require("fs"); 
var Ftp = new JSFtp({ 
    host: localStorage.host, 
    port: Number(localStorage.port), 
    user: localStorage.user, 
    pass: localStorage.ftpPass 
}); 
var local = filePath; 
var remote = localStorage.ftpPath + logName; 
fs.readFile(local, function(err, buffer) { 
    if(err) { 
     console.error(err); 
     callback(err); 
    } 
    else { 
     Ftp.put(buffer, remote, function(err) { 
      if (err) { 
       console.error(err); 
       callback(err); 
      } 
      else { 
       alert(file + " - uploaded successfuly"); 
       callback(); 
      } 
     }); 
    } 
}); 
0

我有同樣的問題。(使用jsftp上傳文件導致零尺寸的vsftpd服務器上的文件)

確保使用console.error打印錯誤。

Ftp.put(buffer, remote, function(err) { 
     if (err) { 
      console.error(err); 
      callback(err); 
     } 
     else { 
      alert(file + " - uploaded successfuly"); 
      callback(); 
     } 
    }); 

錯誤一樣,

{ [Error: connect ETIMEDOUT **192.168.0.4:64953**] 
    code: 'ETIMEDOUT', 
    errno: 'ETIMEDOUT', 
    syscall: 'connect', 
    address: '192.168.0.4', 
    port: 64953 } 

因爲使用PASV模式我的vsftpd的,所以當它返回.jsftp修改IP的端口。我解決此問題: 修改jsftp.js( jsftp/lib/jsftp.js)

var fixhost; 

var Ftp = module.exports = function(cfg) { 
    ... 
    this.useList = cfg.useList || false; 
    fixhost=this.host;//add 
} 

Ftp.prototype.getPasvSocket = function(callback) { 
    ... 
    options.host=fixhost;//add 
    var socket = self._pasvSocket = Net.createConnection(options); 
} 
相關問題