2012-07-16 75 views
1

當我使用QFTP的put命令上傳文件時,它只能上傳大約40字節的指定文件。我正在捕捉dataProgress信號,並且我正在取得進展,但文件的總大小隻讀爲大約40個字節。我的代碼有什麼問題,或者是FTP服務器端的問題?PySide QFTP只能上傳35-40字節

這裏是我的上傳功能:

def upload(self): 
     filename = QFileDialog.getOpenFileName(self, 'Upload File', '.') 
     fname = QIODevice(filename[0]) 
     dataname = filename[0] 
     data = os.path.basename(dataname) 
     #data = data[data.find("/") + 1:] 
     print data 
     print fname 
     if not self.fileTree.currentItem(): 
      self.qftp.put(fname, data) 
     elif "." in self.fileTree.currentItem().text(0): 
      self.qftp.put(fname, self.fileTree.currentItem().parent().text(0) + data) 
     elif self.fileTree.currentItem().text(0) == "/": 
      self.qftp.put(fname, data) 
     else: 
      return 

好了,想通了什麼,我需要做的。我需要創建一個QFile並讀取該文件中的所有字節,然後將其傳遞給put命令。

def upload(self): 
    filename = QFileDialog.getOpenFileName(self, 'Upload File', '.') 
    data = QFile(filename[0]) 
    data.open(1) 
    qdata = QByteArray(data.readAll()) 
    file = os.path.basename(filename[0]) 
    print data 
    if not self.fileTree.currentItem(): 
     self.qftp.put(qdata, file, self.qftp.TransferType()) 
    elif "." in self.fileTree.currentItem().text(0): 
     self.qftp.put(qdata, self.fileTree.currentItem().parent().text(0) + file) 
    elif self.fileTree.currentItem().text(0) == "/": 
     self.qftp.put(qdata, file) 
    else: 
     return 
+0

FTP服務器上的文件結束了什麼? – 2012-07-16 17:43:57

+0

用文本文件測試過,內容是文件上傳位置的完整路徑,例如C:/Users/jake/Desktop/TEST.txt 是否有我的代碼的一部分可以做到這一點? – user1500452 2012-07-16 18:06:36

+0

有一個猜測給出你的文件在服務器上的當前內容的答案 – 2012-07-16 19:31:33

回答

0

我猜data = os.path.basename(dataname)意味着數據總是一個包含文件名的字符串。嘗試改變這是一個開放的FileObj文件使用data = open(os.path.basename(dataname), 'rb')

編輯

看着PySide.QtNetwork.QFtp.put(data, file[, type=Binary])PySide.QtNetwork.QFtp.put(dev, file[, type=Binary]) - 參數的順序是數據的/ dev然後文件 - 所以這是錯誤的方式在您的代碼中...

+0

當我這樣做時,我無法將數據傳遞給put函數,因爲數據需要是QByteArray或QIODevice。我想我知道了這個問題:當我將QByteArray傳遞給put函數時,它會將QByteArray的內容寫入服務器上名稱爲文件的文件中。我需要通過QIODevice將ACTUAL文件寫入服務器。但是,這有一個問題,因爲我不知道如何去做。 – user1500452 2012-07-16 19:58:48

+0

@ user1500452再次更新 – 2012-07-16 20:06:14

+0

問題在那裏只是我的變數命名不佳。類型在正確的地方,但名稱是顛倒的。我弄清楚如何讓它上傳。我要用我所做的來編輯我的原始問題。 – user1500452 2012-07-16 20:28:10