Pyside QFTP zet alleen het uploaden van 35-40 bytes

stemmen
19

Wanneer ik QFTP we opdracht om een ​​bestand alleen uploadt ongeveer 40 bytes van het opgegeven bestand te uploaden. Ik ben het dataProgress signaal vangen en ik krijg de vooruitgang, maar de totale omvang van het bestand is alleen-lezen tot ongeveer 40 bytes zijn. Is er iets mis met mijn code, of is het een probleem aan de kant van de FTP-server?

Hier is mijn upload functie:

 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

Alright, bedacht wat ik moest doen. Ik moest een Qfile te creëren en te lezen van alle bytes van dat bestand en dan doorgeven dat de opdracht 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
De vraag is gesteld op 16/07/2012 om 16:36
user
In andere talen...                            


1 antwoorden

stemmen
0

Ik gok dat data = os.path.basename(dataname)betekent dat gegevens altijd een string met daarin de naam van het bestand. Probeer het veranderen van deze naar een open fileobj worden door gebruik te makendata = open(os.path.basename(dataname), 'rb')

Bewerk

Kijkend naar PySide.QtNetwork.QFtp.put(data, file[, type=Binary])en PySide.QtNetwork.QFtp.put(dev, file[, type=Binary])- de volgorde van de argumenten is data / dev vervolgens het bestand - dus het is de verkeerde manier rond in uw code ...

antwoordde op 16/07/2012 om 18:30
bron van user

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