QNetworkAccessManager: HTTP арқылы файлдарды жіберу

PHP арқылы apache серверінде бірнеше файлды жүктеу үшін QNetworkAccessManager-ды пайдалану керек.

Мен мұнда сұраймын, себебі мен Python ad QT (PySide) үшін жаңалықтым, және біреуі мұны көрсететін оқу немесе мысал үлгісі бар ма (python).

Ескерту: Егер мұндай мазмұн жоқ болса, мен оны өзім жасауға тырыстым және кейіннен оқулықты ортақ пайдаланамын.

1
Qt 4.8 бастап (және 1.0.8 нұсқасы) сіз QHttpMultiPart пайдалана аласыз.
қосылды автор alexisdm, көзі
Мен QT 4.7-де жұмыс істеймін, бірақ байланысқа рахмет :)!
қосылды автор Fy-, көзі

1 жауаптар

Ең жақсы әдіс екенін білмеймін, бірақ ол жақсы жұмыс істейді.

    class Upload():
        def __init__(self):
            self.url     = QUrl("http://www.website.com/up.php")
            self.manager = QtNetwork.QNetworkAccessManager()

        def sendRequest(self, replayfile):
            self.request = QtNetwork.QNetworkRequest(self.url)              

            self.request.setRawHeader("Host", str(self.url.host()));
            self.request.setRawHeader("Content-type", "multipart/form-data; boundary=AaB03x");

            fp = QFile(replayfile)
            fp.open(QIODevice.ReadOnly)
            bytes = QByteArray()

            bytes.append("--AaB03x\r\n")
            bytes.append("Content-Disposition: ")
            bytes.append("form-data; name=\"replay\"; filename=\"" + QByteArray(str(QFileInfo(replayfile).fileName())) + "\"\r\n")
            bytes.append("Content-Type: %s\r\n"%mimetypes.guess_type(str(replayfile))[0])
            bytes.append("\r\n")
            bytes.append(fp.readAll())

            fp.close()       

            bytes.append("\r\n")
            bytes.append("--AaB03x--")

            contentLength = bytes.length()
            self.request.setRawHeader("Content-Length", "%s" % contentLength)       

            self.manager.post(self.request, bytes)  

PHP-те:

    Array
    (
        [replay] => Array
            (
                [name] => test.SC2Replay
                [type] => None
                [tmp_name] => /tmp/phpK6tChh
                [error] => 0
                [size] => 9882
            )

    )
3
қосылды