1
我只需要使用QNetworkAccessManager在apache服務器上用PHP上傳多個文件。QNetworkAccessManager:通過HTTP發佈文件
我在這裏問,因爲我是新來的Python廣告QT(PySide),我想知道是否有人有教程或代碼示例(在Python中)演示這一點。
注意:如果這種內容不可用,我會嘗試自己做,並在之後分享一個教程。
我只需要使用QNetworkAccessManager在apache服務器上用PHP上傳多個文件。QNetworkAccessManager:通過HTTP發佈文件
我在這裏問,因爲我是新來的Python廣告QT(PySide),我想知道是否有人有教程或代碼示例(在Python中)演示這一點。
注意:如果這種內容不可用,我會嘗試自己做,並在之後分享一個教程。
不知道這是最好的方式,但它工作正常。
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
)
)
使用Qt 4.8(和pyside 1.0.8),您可以使用[QHttpMultiPart(http://doc.trolltech.com/4.8/qhttpmultipart.html啓動)。 – alexisdm
我正在使用QT 4.7,但感謝鏈接:)! –