使用python模拟post表单上传文件
2015-03-25 11:01
826 查看
最近有个将文件上传到内部web服务器上的任务,于是参考了网上部分源码用python写了这个小程序,代码如下:
#coding:utf-8 ''' Created on 2015.3.19 @author: damofy ''' import os import time import sys import urllib2 ''' filename 待上传的文件 fieldname 表单域中的name属性 ''' def CreateBody(filename, fieldname, strBoundary): bRet = False sData = [] sData.append('--%s' % strBoundary) #'Content-Disposition: form-data; name="uploadfile"; filename="XX-Net-1.3.6.zip"' sData.append('Content-Disposition: form-data; name="%s";' % fieldname + 'filename="%s"' % os.path.basename(filename)) sData.append('Content-Type: %s\r\n' % 'application/octet-stream') try: pFile = open(filename, 'rb') sData.append(pFile.read()) sData.append('--%s--\r\n' % strBoundary) bRet = True finally: pFile.close() return bRet, sData def uploadfile(http_url, filename, fieldname): if os.path.exists(filename): filesize = os.path.getsize(filename) print('file:' + filename + ' is %d bytes!' % filesize) else: print('file:' + filename + ' isn\'t exists!') return False strBoundary = '---------------------------%s' % hex(int(time.time() * 1000)) bRet, sBodyData = CreateBody(filename, fieldname, strBoundary) if True == bRet: http_body = '\r\n'.join(sBodyData) stReq = urllib2.Request(http_url, http_body) stReq.add_header('User-Agent','Mozilla/5.0') stReq.add_header('Content-Length:', '%d' % filesize) stReq.add_header('Content-Type', 'multipart/form-data; boundary=%s' % strBoundary) resp = urllib2.urlopen(stReq, timeout=5) # get response msg = resp.read() print("Response content:\n" + msg) else: print("CreateBody failed!") return bRet if __name__ == '__main__': if len(sys.argv) > 2: http_url = sys.argv[1] filename = sys.argv[2] else: print('python upload.py http://10.20.131.23/upload ./test.dat') sys.exit() # 参数3 "uploadfile" 是post表单中的name属性,需要与服务端保持一致 uploadfile(http_url, filename, 'uploadfile')
相关文章推荐
- CURL模拟表单post提交及相关常用参数的使用(包括提交表单同时上传文件)
- HttpClien实现使用post方式模拟表单上传大文件和字符参数
- 使用java ssm框架后台模拟post上传文件并提交表单数据
- CURL模拟表单post提交及相关常用参数的使用(包括提交表单同时上传文件)
- C#模拟web请求,使用post提交带有文件的数据表单
- java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例
- python_模拟表单上传文件
- Python中利用urllib2使用POST方式上传文件
- android 文件上传(POST方式模拟表单提交)
- 使用Python Requests上传表单数据和文件
- HttpClient的使用——Post方式提交表单和上传文件
- Python模拟HTTP Post上传文件
- 使用WebClient上传文件并同时Post表单数据字段到服务端
- Python中使用POST方式上传文件
- 使用httpclient模拟表单上传文件,后台用struts2接收
- python 模拟表单上传文件
- Python中使用POST方式上传文件
- [C#]使用WebClient上传文件并同时Post表单数据字段到服务端
- python 模拟表单上传文件