Pyside QFtp setzen nur das Hochladen von 35-40 Bytes

stimmen
19

Wenn ich QFtp der PUT-Befehl, eine Datei hochzuladen es nur uploads um 40 Byte der angegebenen Datei. Ich fange das dataProgress Signal und ich bin immer den Fortschritt, aber die Gesamtgröße der Datei gelesen wird, nur etwa 40 Byte. Gibt es etwas falsch mit meinem Code, oder ist es ein Problem auf der Seite des FTP-Servers?

Hier ist meine Upload-Funktion:

 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

In Ordnung, herausgefunden, was ich tun musste. Ich brauchte eine QFile zu erstellen und alle Bytes aus dieser Datei gelesen und dann das Kommando an den Put passieren.

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
Veröffentlicht am 16/07/2012 um 16:36
vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Ich vermute , dass data = os.path.basename(dataname)bedeutet , Daten immer eine Zeichenfolge , die den Namen der Datei enthält. Versuchen Sie , diese eine offene fileobj sein , indem Siedata = open(os.path.basename(dataname), 'rb')

bearbeiten

Mit Blick auf PySide.QtNetwork.QFtp.put(data, file[, type=Binary])und PySide.QtNetwork.QFtp.put(dev, file[, type=Binary])- die Reihenfolge der Argumente ist data / dev dann Datei - so ist es der falsche Weg , um in Ihrem Code ...

Beantwortet am 16/07/2012 um 18:30
quelle vom benutzer

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