Results 1 to 18 of 18

Thread: Http Posting using QNetworkAccessManager

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Jan 2014
    Location
    Iran
    Posts
    15
    Thanks
    9
    Qt products
    Platforms
    Unix/X11 Windows

    Default Http Posting using QNetworkAccessManager

    Hello
    I'm facing another problem
    it's about uploading file through HTTP posting
    this is my code

    Qt Code:
    1. from PyQt4 import QtCore, QtGui, QtNetwork
    2. import sys
    3. class Window(QtGui.QWidget):
    4. def __init__(self, parent=None):
    5. super(Window, self).__init__(parent)
    6.  
    7. self.netaccess = QtNetwork.QNetworkAccessManager(self)
    8. self._uploaders = {}
    9. row = 1 #this number will change per upload in real program,this is just demo
    10. self.address = 'http://localhost/01/upload/demo.php'
    11. stream = QtCore.QFile('/home/patriot/icon.png')
    12. if stream.open(QtCore.QIODevice.ReadOnly):
    13. data = stream
    14.  
    15. uploader = self._uploaders[row] = Uploader(row, self.netaccess)
    16.  
    17. uploader.upload(data, self.address)
    18.  
    19. class Uploader(QtCore.QObject):
    20.  
    21. def __init__(self, key, parent):
    22. QtCore.QObject.__init__(self, parent)
    23. self._key = key
    24. self._reply = None
    25.  
    26.  
    27. def upload(self, data, url):
    28. if self._reply is None:
    29.  
    30. self._stream = data
    31.  
    32. self._multiPart = QtNetwork.QHttpMultiPart(QtNetwork.QHttpMultiPart.FormDataType)
    33.  
    34. fileName = QtCore.QFileInfo(self._stream.fileName()).fileName()
    35. key = 'file'
    36.  
    37. imagePart = QtNetwork.QHttpPart()
    38. imagePart.setHeader(QtNetwork.QNetworkRequest.ContentDispositionHeader,
    39. "form-data; name=\"%s\"; filename=\"%s\"" % (key, fileName))
    40. imagePart.setHeader(QtNetwork.QNetworkRequest.ContentTypeHeader,
    41. 'image/png')
    42. imagePart.setBodyDevice(self._stream)
    43.  
    44. self._multiPart.append(imagePart)
    45.  
    46. request = QtNetwork.QNetworkRequest(QtCore.QUrl(url))
    47. request.setHeader(QtNetwork.QNetworkRequest.ContentTypeHeader,
    48. 'multipart/form-data; boundary=%s' % self._multiPart.boundary())
    49. request.setRawHeader('User-Agent','Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')
    50.  
    51. self._reply = self.parent().post(request, self._multiPart)
    52. self._reply.uploadProgress.connect(self.handleUploadProgress)
    53. self._reply.error.connect(self.handleError)
    54. self._reply.finished.connect(self.handleFinished)
    55.  
    56.  
    57.  
    58. def handleUploadProgress(self, sent, total):
    59. if sent >= total:
    60. # prevent duplicated uploads
    61. self._reply.close()
    62.  
    63. def handleFinished(self):
    64. print('Content: ',self._reply.readAll())#no output here :(
    65. self._stream.close()
    66. self._multiPart.deleteLater()
    67. self._reply.deleteLater()
    68. self._reply = None
    69. app.quit()
    70.  
    71. def handleError(self):
    72. print('Error String :',self._reply.errorString())
    73. print('Error number: ',self._reply.error())
    74.  
    75.  
    76. app = QtGui.QApplication(sys.argv)
    77. demo = Window()
    78. sys.exit(app.exec_())
    To copy to clipboard, switch view to plain text mode 

    I use an answer in stackoverflow.com,the code needs to upload to a php script but I don't know why it's not working
    anyone have any idea ?anything
    thanks

    edit: this is html form
    Qt Code:
    1. <form action="demo.php" method="post"
    2. enctype="multipart/form-data">
    3. <label for="file">Filename:</label>
    4. <input type="file" name="file" id="file"><br>
    5. <input type="submit" name="submit" value="Submit">
    6. </form>
    To copy to clipboard, switch view to plain text mode 
    Last edited by Mohammadhzp; 21st January 2014 at 01:19.

Similar Threads

  1. Replies: 2
    Last Post: 8th January 2014, 15:40
  2. Replies: 4
    Last Post: 2nd May 2012, 12:51
  3. QNetworkAccessManager and http redirection
    By grayfox in forum Qt Programming
    Replies: 5
    Last Post: 8th July 2011, 17:24
  4. HTTP Post from QNetworkAccessManager - no data sent
    By secureboot in forum Qt Programming
    Replies: 1
    Last Post: 13th April 2011, 18:46
  5. QNetworkAccessManager Http Basic Authentication?
    By jloundy in forum Qt Programming
    Replies: 5
    Last Post: 29th December 2010, 00:19

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.