小弟刚接触python ,感觉这门语言是如此的神奇。最近,想帮同事写一个能通过post 上传文件的脚本。到网上一搜,有几个模块可以用,用的最多的是MultipartPostHandler和poster。网上的资料也有例子,不过很坑爹啊,都是把官方的例子给复制出来到处粘贴,有木有啊。按照例子实验,怎么都不能成功,不知道为何。下面,我贴出代码,希望高手们能帮忙。代码是临时写的测试用的:
index.php
Filename:
upload.php:
if(isset($_POST["submit"])){
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "
";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "
";
echo "Type: " . $_FILES["file"]["type"] . "
";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";
echo "Stored in: " . $_FILES["file"]["tmp_name"]."
";
move_uploaded_file($_FILES["file"]["tmp_name"],$_FILES["file"]["name"]);
echo "Stored in: ".$_FILES["file"]["name"];
}
}
?> 下面分别是两种方法实现的上传文件:
#filename:uploadFile3.py
#module:MultipartPostHandler
import MultipartPostHandler, urllib2, cookielib,time
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),
MultipartPostHandler.MultipartPostHandler)
params = {"filename":open("E:\\py\\uploadFile\\1.xls","rb")}
opener.open("http://localhost/upload/",params)
time.sleep(10)
print "handle the request"
# -*- coding: gbk -*-
#module of poster
#filename:uploadFile2.py
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import urllib2,sys
register_openers()
datagen,headers = multipart_encode({'file':open("E:\\py\\uploadFile\\1.xls","rb")})
request = urllib2.Request("http://localhost/upload/",datagen,headers)
#print urllib2.urlopen(request).read()
悲剧的是,这两种方法都没能实现上传哦。请各位大神给予指点。非常感谢。