python 通过post 上传文件

小弟刚接触python ,感觉这门语言是如此的神奇。最近,想帮同事写一个能通过post 上传文件的脚本。到网上一搜,有几个模块可以用,用的最多的是MultipartPostHandler和poster。网上的资料也有例子,不过很坑爹啊,都是把官方的例子给复制出来到处粘贴,有木有啊。按照例子实验,怎么都不能成功,不知道为何。下面,我贴出代码,希望高手们能帮忙。代码是临时写的测试用的:

 1 index.php
 2 
 3 <html>
 4 <body>
 5 
 6 <form name="upload" action="upload.php" method="post" enctype="multipart/form-data">
 7 <label for="file">Filename:</label>
 8 <input type="file" name="filename" id="file" /> 
 9 <br />
10 <input type="submit" name="submit" value="Submit" />
11 </form>
12 
13 </body>
14 </html>
upload.php

<?php
if(isset($_POST["submit"])){
    if ($_FILES["filename"]["error"] > 0)
      {
      echo "Error: " . $_FILES["filename"]["error"] . "<br />";
      }
    else
      {
      echo "Upload: " . $_FILES["filename"]["name"] . "<br />";
      echo "Type: " . $_FILES["filename"]["type"] . "<br />";
      echo "Size: " . ($_FILES["filename"]["size"] / 1024) . " Kb<br />";
      echo "Stored in: " . $_FILES["filename"]["tmp_name"]."<br/>";
      move_uploaded_file($_FILES["filename"]["tmp_name"],$_FILES["filename"]["name"]);
      echo "Stored in: ".$_FILES["filename"]["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("1.xls","rb")}

opener.open("http://127.0.0.1/upload/",params)

time.sleep(10)

print "handle the request"
 1 # -*- coding: gbk -*-
 2 #module of poster
 3 #filename:uploadFile2.py
 4 from poster.encode import multipart_encode
 5 from poster.streaminghttp import register_openers
 6 import urllib2,sys
 7 
 8 register_openers()
 9 
10 datagen,headers = multipart_encode({'filename':open("1.xls","rb"),'name':'filename','action':'upload.php'})
11 request = urllib2.Request("http://127.0.0.1/upload/",datagen,headers)
12 
13 print urllib2.urlopen(request).read()

 

 

悲剧的是,这两种方法都没能实现上传哦。请各位大神给予指点。非常感谢。

posted on 2012-11-29 14:21  zzzhhh  阅读(1360)  评论(0编辑  收藏  举报

导航