PySide QFTP pune doar încărcând 35-40 bytes

voturi
19

Când am folosi lui QFTP pune comanda pentru a încărca un fișier ea încarcă doar în jur de 40 de octeți din fișierul specificat. Sunt de capturare semnalul dataProgress și eu sunt obtinerea progresului, dar dimensiunea totală a fișierului este citit doar pentru a fi în jur de 40 de octeți. Este ceva în neregulă cu codul meu, sau este o problemă pe partea server FTP?

Aici este funcția mea de încărcare:

 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

Bine, a dat seama ce trebuia să fac. Am nevoie pentru a crea un QFile și a citit toate octeți de la acel fișier și apoi treci pe care la comanda 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
Întrebat 16/07/2012 la 16:36
de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Bănuiesc că data = os.path.basename(dataname)înseamnă date este întotdeauna un șir de caractere care conține numele fișierului. Încercați să schimbați acest lucru să fie o fileobj deschisă prin utilizareadata = open(os.path.basename(dataname), 'rb')

Editați | ×

Privind PySide.QtNetwork.QFtp.put(data, file[, type=Binary])și PySide.QtNetwork.QFtp.put(dev, file[, type=Binary])- ordinea argumentelor este de date / dev apoi fișier - deci este modul greșit în jurul valorii în codul ...

Publicat 16/07/2012 la 18:30
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more