簡體   English   中英

Python urllib2文件上傳問題

[英]Python urllib2 file upload problems

我目前正在嘗試使用urllib2和urllib2_file庫啟動文件上傳。 這是我的代碼:

import sys
import urllib2_file
import urllib2

URL='http://aquate.us/upload.php'
d = [('uploaded', open(sys.argv[1:]))]
req = urllib2.Request(URL, d)
u = urllib2.urlopen(req)
print u.read()

我已將此.py文件放在我的“我的文檔”目錄中,並在“發送到”文件夾中放置了一個快捷方式(快捷方式URL為)。

當我右鍵單擊一個文件時,選擇Send To,然后選擇Aquate(我的python),它會打開命令提示符一瞬間然后關閉它。 什么都沒上傳。

我知道可能發生了錯誤,因此我逐行將代碼輸入到CL python中。 當我運行u=urllib2.urlopen(req)行時,我沒有收到錯誤; 替代文字http://www.aquate.us/u/55245858877937182052.jpg

相反,光標只是在該行下方的新行上開始閃爍。 我等了幾分鍾,看看是否會發生什么事情,但它只是那樣。 為了讓它停止,我不得不按ctrl + break。

這個腳本有什么用?

提前致謝!

[編輯]忘了提 - 當我在沒有請求數據(文件)的情況下運行腳本時,它就像魅力一樣運行。 這是urllib2_file的問題嗎?

[編輯2]:

import MultipartPostHandler, urllib2, cookielib,sys
import win32clipboard as w
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),MultipartPostHandler.MultipartPostHandler)
params = {"uploaded" : open("c:/cfoot.js") }
a=opener.open("http://www.aquate.us/upload.php", params)
text = a.read()
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardText(text)
w.CloseClipboard()

如果您通過命令行運行它,該代碼就像一個魅力。

如果您使用的是Python 2.5或更高版本,則urllib2_file既不必要也不受支持,因此請檢查您正在使用的版本(可能還要升級)。

如果您使用的是Python 2.3或2.4( urllib2_file支持的唯一版本),請嘗試運行示例代碼並查看是否存在相同的問題。 如果是這樣,您的Python或urllib2_file安裝可能有問題。

編輯:

此外,您似乎沒有使用urllib2_file的兩種支持的POST數據格式。 嘗試使用以下兩行,而不是一個

d = ['uploaded', open(sys.argv[1:])]
## --OR-- ##
d = {'uploaded': open(sys.argv[1:])}

如果你還在使用Python2.5,對我來說有用的是在這里下載代碼:

http://peerit.blogspot.com/2007/07/multipartposthandler-doesnt-work-for.html

並將其另存為MultipartPostHandler.py

然后使用:

import urllib2, MultipartPostHandler

opener = urllib2.build_opener(MultipartPostHandler.MultipartPostHandler())
opener.open(url, {"file":open(...)})

或者如果你需要cookies:

import urllib2, MultipartPostHandler, cookielib

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), MultipartPostHandler.MultipartPostHandler())
opener.open(url, {"file":open(...)})

首先,有第三種方法來運行Python程序。

從cmd.exe中,鍵入python myprogram.py 你得到一個很好的日志。 您不必一次輸入一行內容。

其次,檢查urrlib2文檔。 你也需要看看urllib

請求需要URL和urlencoded編碼的數據緩沖區。

數據應該是標准application / x-www-form-urlencoded格式的緩沖區。 urllib.urlencode()函數采用2元組的映射或序列,並以此格式返回一個字符串。

您需要對數據進行編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM