Ich versuche derzeit, einen Dateiupload mit Urllib2 und der urllib2_file-Bibliothek zu initiieren. Hier ist mein Code:Python urllib2 Datei-Upload-Probleme
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()
ich diese Py-Datei abgelegt habe in meinem Verzeichnis Eigene Dateien und platziert eine Verknüpfung, um es in meinem Senden an Ordner (die Abkürzung URL ist).
Wenn ich mit der rechten Maustaste auf eine Datei klicke, auf Senden an klicke und Aquate (mein Python) auswähle, öffnet sie eine Eingabeaufforderung für einen Sekundenbruchteil und schließt sie dann. Es wird nichts hochgeladen.
Ich wusste, dass wahrscheinlich ein Fehler auftrat, also tippte ich den Code Zeile für Zeile in CL python ein. Wenn ich die u=urllib2.urlopen(req)
Zeile ausgeführt habe, habe ich keinen Fehler erhalten; alt text http://www.aquate.us/u/55245858877937182052.jpg
Stattdessen begann der Cursor einfach auf einer neuen Zeile unter dieser Zeile zu blinken. Ich wartete ein paar Minuten, um zu sehen, ob etwas passieren würde, aber es blieb einfach so. Um es zu stoppen, musste ich Strg + Pause drücken.
Was ist los mit diesem Skript?
Vielen Dank im Voraus!
[Bearbeiten] Vergessen zu erwähnen - wenn ich das Skript ohne die Anfrage Daten (die Datei) lief es lief wie ein Charme. Ist es ein Problem mit urllib2_file?
[bearbeiten 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()
Dieser Code funktioniert wie ein Charme, wenn Sie es über die Befehlszeile ausgeführt werden.
Sie sagen, dass urllib2_file auf Python 2.5 und höher nicht notwendig ist, aber diese Funktionalität existiert in Python noch nicht. Basierend auf http://bugs.python.org/issue3244, können Multipart/Formulardaten-Uploads hier in 2.7 sein, aber das ist noch nicht veröffentlicht. – archbishop
Ich habe das Problem nicht untersucht, seit ich dies vor mehr als einem Jahr gepostet habe, aber zu der Zeit war ich in der Lage, die Funktionalität von urllib2_file in Python 2.6 zu duplizieren und sogar die Seite der Bibliothek sagt, dass sie nur für Python 2.3 und 2.4 benötigt wird. Ich kann nur davon ausgehen, dass sich Bug auf ein separates (aber wahrscheinlich eng verwandtes) Problem bezieht. :-) –
Der Link zum Beispielcode ist ein toter Link. – neowulf33