Python urllib2 file upload problems

后端 未结 3 2017
悲哀的现实
悲哀的现实 2020-12-29 15:47

I\'m currently trying to initiate a file upload with urllib2 and the urllib2_file library. Here\'s my code:

import sys
import urllib2_file
import urllib2

UR         


        
相关标签:
3条回答
  • 2020-12-29 16:05

    First, there's a third way to run Python programs.

    From cmd.exe, type python myprogram.py. You get a nice log. You don't have to type stuff one line at a time.

    Second, check the urrlib2 documentation. You'll need to look at urllib, also.

    A Request requires a URL and a urlencoded encoded buffer of data.

    data should be a buffer in the standard application/x-www-form-urlencoded format. The urllib.urlencode() function takes a mapping or sequence of 2-tuples and returns a string in this format.

    You need to encode your data.

    0 讨论(0)
  • 2020-12-29 16:09

    If you're using Python 2.5 or newer, urllib2_file is both unnecessary and unsupported, so check which version you're using (and perhaps upgrade).

    If you're using Python 2.3 or 2.4 (the only versions supported by urllib2_file), try running the sample code and see if you have the same problem. If so, there is likely something wrong either with your Python or urllib2_file installation.

    EDIT:

    Also, you don't seem to be using either of urllib2_file's two supported formats for POST data. Try using one of the following two lines instead:

    d = ['uploaded', open(sys.argv[1:])]
    ## --OR-- ##
    d = {'uploaded': open(sys.argv[1:])}
    
    0 讨论(0)
  • 2020-12-29 16:15

    If you're still on Python2.5, what worked for me was to download the code here:

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

    and save it as MultipartPostHandler.py

    then use:

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

    or if you need cookies:

    import urllib2, MultipartPostHandler, cookielib
    
    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), MultipartPostHandler.MultipartPostHandler())
    opener.open(url, {"file":open(...)})
    
    0 讨论(0)
提交回复
热议问题