`
chembo
  • 浏览: 922990 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

python cgi 上传大文件

阅读更多
#!E:\Python27\python.exe
import cgi, os
import cgitb; cgitb.enable()

try: # Windows needs stdio set for binary mode.
    import msvcrt
    import uuid
    msvcrt.setmode (0, os.O_BINARY) # stdin  = 0
    msvcrt.setmode (1, os.O_BINARY) # stdout = 1
except ImportError:
    pass

form = cgi.FieldStorage()

# Generator to buffer file chunks
def fbuffer(f, chunk_size=10000):
   while True:
      chunk = f.read(chunk_size)
      if not chunk: break
      yield chunk

# A nested FieldStorage instance holds the file
fileitem = form['file']

# Test if the file was uploaded
if fileitem.filename:

   # strip leading path from file name to avoid directory traversal attacks
   fn = os.path.basename(fileitem.filename)
  
   # Internet Explorer will attempt to provide full path for filename fix
   fn = fn.split('\\')[-1]
 
   # This path must be writable by the web server in order to upload the file.
   path = 'D:/upload/'
   filepath = path + fn

   # Open the file for writing 
   f = open(filepath , 'wb', 10000)

   # Read the file in chunks
   for chunk in fbuffer(fileitem.file):
      f.write(chunk)
   f.close()


   message = 'The file "' + fn + '" was uploaded successfully.'

else:
   message = 'No file was uploaded'

print """\
Content-Type: text/html\n
<html><body>
<p>%s</p>
</body></html>
""" % (message,)

分享到:
评论

相关推荐

    Python实现基于HTTP文件传输实例

    本文实例讲述了Python实现基于HTTP文件传输的方法。分享给大家供大家参考。具体实现方法如下: 一、问题: 因为需要最近看了一下通过POST请求传输文件的内容 并且自己写了Server和Client实现了一个简单的机遇HTTP的...

    嵌入式web服务器boa_C语言/Python + HTML + javascript + ajax 代码实例例子

    上传文件: http://blog.csdn.net/yu_xiang/article/details/7996670 查找文件 find . -type f -name "boa.conf" -print -mount find . -type f -name "boa" -print -mount 四、嵌入式web服务器boa的配置和使用...

    用Python实现一个简单的能够上传下载的HTTP服务器

    # -: 解决不同浏览器下上传文件名乱码问题:仅IE,其它浏览器暂时没处理。 # -: 一些路径显示的bug,主要是 cgi.escape() 转义问题 # ?: notepad++ 下直接编译的server路径问题 """ 简介:这是一个 python

    Python核心编程第二版

    很不错的python书 第1部分 Python核心  第1章 欢迎来到Python世界   1.1 什么是Python   1.2 起源   1.3 特点   1.3.1 高级   1.3.2 面向对象   1.3.3 可升级   1.3.4 可扩展   1.3.5 可...

    Python Cookbook

    14.3 用CGI上传文件 507 14.4 检查web页面的存在 509 14.5 通过HTTP检查内容类型 510 14.6 续传HTTP下载文件 512 14.7 抓取Web页面时处理Cookie 513 14.8 通过带身份验证的代理进行HTTPS导航 516 14.9 用...

    Python核心编程第二版(ok)

    Python核心编程第二版(ok) 第1部分 Python核心  第1章 欢迎来到Python世界   1.1 什么是Python   1.2 起源   1.3 特点   1.3.1 高级   1.3.2 面向对象   1.3.3 可升级   1.3.4 可扩展   ...

    Python实现注册登录系统

    表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。 表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单...

    multipart:适用于Python 3的多部分解析器

    磁盘上的临时文件可进行较大的上传。 内存和磁盘资源限制,以防止DOS攻击。 修复了cgi.FieldStorage许多缺点和错误。 100%的测试覆盖率。 局限性 从实际浏览器看,仅解析multipart/form-data 。 不适合用作...

    计算机网络课程设计-基于python实现的WebServer+源码+文档说明

    兼容CGI的多线程静态、动态Web服务框架。 网站的所有资源放在webroot文件夹下 服务器的工作代码是主目录下的几个.py文件 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,...

    FileTornado-开源

    FileTornado是一组用Python编码的CGI脚本,用于基于Web的文件存储库,支持成员注册,投票和评论以及文件上传。 该代码来自http://screammachinescentral.com上运行的CGI。

    CVE-2021-21978:带回显版本的突破利用脚本

    VMware View Planner Web管理界面存在一个上传日志功能文件的入口,没有进行认证且写入的日志文件路径用户可控,通过覆盖上传日志功能文件log_upload_wsgi.py ,可以实现RCE 防御代码: def application ( environ ...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意...

Global site tag (gtag.js) - Google Analytics