PySide QFTP solo mettere caricamento 35-40 byte

voti
19

Quando uso QFTP del comando messo a caricare un file che carica solo circa 40 byte del file specificato. Sto cattura il segnale dataProgress e sto ottenendo i progressi, ma la dimensione totale del file è di sola lettura per essere circa 40 byte. C'è qualcosa di sbagliato con il mio codice, o è un problema sul lato del server FTP?

Ecco la mia funzione di upload:

 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

Va bene, capito cosa dovevo fare. Avevo bisogno di creare un qfile e leggere tutti i byte da quel file e quindi passare che per il comando 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
È pubblicato 16/07/2012 alle 16:36
dall'utente
In altre lingue...                            


1 risposte

voti
0

Sto indovinando che data = os.path.basename(dataname)significa che i dati è sempre una stringa contenente il nome del file. Provare a cambiare questo sia un fileobj aperta utilizzandodata = open(os.path.basename(dataname), 'rb')

modificare

Guardando PySide.QtNetwork.QFtp.put(data, file[, type=Binary])e PySide.QtNetwork.QFtp.put(dev, file[, type=Binary])- l'ordine degli argomenti è dati / dev quindi il file - quindi è il modo sbagliato nel codice ...

Risposto il 16/07/2012 a 18:30
fonte dall'utente

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