PySide QFTP dát pouze nahráním 35-40 bajtů

hlasů
19

Když jsem se použít QFTP je dát příkaz k nahrání souboru ho budou nahrávat, jen kolem 40 bajtů zadaného souboru. Já zachycení dataProgress signál a já začínám pokrok, ale celková velikost souboru je čten být kolem 40 bajtů pouze. Je tam něco špatně s mým kódem, nebo se jedná o problém na straně serveru FTP?

Tady je moje funkce nahrávání:

 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

V pořádku, přišel na to, co jsem potřeboval udělat. Potřeboval jsem vytvořit QFile a číst všechny byty z tohoto souboru a pak projít kolem toho do příkazu 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
Položena 16/07/2012 v 16:36
uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Hádám, že data = os.path.basename(dataname)znamená, že data jsou vždy řetězec obsahující název souboru. Zkuste změnit to být otevřený fileobj pomocídata = open(os.path.basename(dataname), 'rb')

Upravit

Podíváme-li se PySide.QtNetwork.QFtp.put(data, file[, type=Binary])a PySide.QtNetwork.QFtp.put(dev, file[, type=Binary])- pořadí argumentů data / dev pak soubor - tak je to špatný způsob, jak obejít v kódu ...

Odpovězeno 16/07/2012 v 18:30
zdroj uživatelem

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