国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中使用POST方式上傳文件

2019-11-06 07:08:41
字體:
來源:轉載
供稿:網友

如果只是要模擬提交一個不包含文件字段的表單,實現起來是很簡單的,但涉及到文件上傳就有一點小復雜,需要自己對文件進行編碼,或者使用第三方模塊。

如果機器上有 PycURL,那么可以使用 PycURL 來上傳文件。

不過,由于 PycURL 需要用到 curl,在 Windows 下安裝可能會有點麻煩,除 PycURL 外,也有一些其它實現 POST 文件上傳的方式,比如 這兒 的 2 樓有人貼出了一個將文件進行編碼之后再 POST 的方法,另外還有MultipartPostHandler、urllib2_file、poster 等第三方模塊。但 MultipartPostHandler 這個模塊似乎比較老了,urllib2_file 我試用了一下遇到錯誤沒有成功,這兒我想介紹的是另外一個第三方模塊 poster。

如果機器上安裝了 Python 的 setuptools,可以通過下面的命令來安裝 poster:

easy_installposter

裝完之后,就可以像下面這樣上傳文件了:

[python] view plain copy 在CODE上查看代碼片# test_client.py  from poster.encode import multipart_encode  from poster.streaminghttp import register_openers  import urllib2    # 在 urllib2 上注冊 http 流處理句柄  register_openers()    # 開始對文件 "DSC0001.jpg" 的 multiart/form-data 編碼  # "image1" 是參數的名字,一般通過 HTML 中的 <input> 標簽的 name 參數設置    # headers 包含必須的 Content-Type 和 Content-Length  # datagen 是一個生成器對象,返回編碼過后的參數  datagen, headers = multipart_encode({"image1": open("DSC0001.jpg", "rb")})    # 創建請求對象  request = urllib2.Request("http://localhost:5000/upload_image", datagen, headers)  # 實際執行請求并取得返回  PRint urllib2.urlopen(request).read()  

很簡單,文件就上傳完成了。

其中那個 register_openers() 相當于以下操作:

[python] view plain copy 在CODE上查看代碼片from poster.encode import multipart_encode  from poster.streaminghttp import StreamingHTTPHandler, StreamingHTTPRedirectHandler, StreamingHTTPSHandler     handlers = [StreamingHTTPHandler, StreamingHTTPRedirectHandler, StreamingHTTPSHandler]  opener = urllib2.build_opener(*handlers)  urllib2.install_opener(opener)  另外,poster%20也可以攜帶%20cookie,比如:

[python] view%20plain copy opener = poster.streaminghttp.register_openers()  opener.add_handler(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))    params = {'file': open("test.txt", "rb"), 'name': 'upload test'}  datagen, headers = poster.encode.multipart_encode(params)  request = urllib2.Request(upload_url, datagen, headers)  result = urllib2.urlopen(request)  
上一篇:python簡介

下一篇:Python學習心得

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 法库县| 开封市| 专栏| 五大连池市| 沙雅县| 塔河县| 周口市| 伊吾县| 凤阳县| 桂阳县| 巴里| 曲阜市| 新巴尔虎左旗| 通山县| 德江县| 东城区| 桦川县| 扬中市| 盘山县| 镇康县| 临武县| 清水河县| 南陵县| 阿克陶县| 西华县| 陇川县| 勃利县| 宜黄县| 防城港市| 漠河县| 凤阳县| 长垣县| 信丰县| 祥云县| 武冈市| 沈阳市| 莱州市| 吴川市| 兴仁县| 习水县| 库尔勒市|