PySide QFTP βάλει μόνο τη μεταφόρτωση 35-40 bytes

ψήφοι
19

Όταν χρησιμοποιείτε QFTP βάλουμε εντολή για να φορτώσετε ένα αρχείο που ανεβάζει μόνο περίπου 40 bytes του συγκεκριμένου αρχείου. Είμαι πιάσει το σήμα dataProgress και παίρνω την πρόοδο, αλλά το συνολικό μέγεθος του αρχείου είναι μόνο για ανάγνωση για να είναι περίπου 40 bytes. Υπάρχει κάποιο πρόβλημα με κωδικό μου, ή είναι ένα πρόβλημα από την πλευρά του διακομιστή FTP;

Εδώ είναι η λειτουργία 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

Εντάξει, κατάλαβα τι έπρεπε να κάνω. Έπρεπε να δημιουργήσουμε ένα QFile και να διαβάσετε όλα τα bytes από το αρχείο και στη συνέχεια να περάσει αυτό με την εντολή πώλησης.

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
Δημοσιεύθηκε 16/07/2012 στις 16:36
χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Υποθέτω ότι data = os.path.basename(dataname)σημαίνει ότι τα δεδομένα είναι πάντα ένα string που περιέχει το όνομα του αρχείου. Προσπαθήστε να αλλάξετε αυτό να είναι μια ανοιχτή fileobj χρησιμοποιώνταςdata = open(os.path.basename(dataname), 'rb')

επεξεργασία

Κοιτάζοντας PySide.QtNetwork.QFtp.put(data, file[, type=Binary])και PySide.QtNetwork.QFtp.put(dev, file[, type=Binary])- η σειρά των επιχειρημάτων είναι τα δεδομένα / dev τότε το αρχείο - γι 'αυτό είναι ο λανθασμένος τρόπος γύρω στον κώδικά σας ...

Απαντήθηκε 16/07/2012 στις 18:30
πηγή χρήστη

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