python

Python3 本地测试上传文件

2018-04-21  本文已影响1171人  2010jing

可能刚刚开始很多同学没有接触过HTML,以及一些form表单内的file 不知道如何提交。 本文粗略介绍,一个简单的例子。

准备

本例子是基于 python3 + windows10.

首先,我们可以在任何一个地方 创建一个 文件夹 www
然后在 www 内 再创建两个文件夹 cgi-binfiles

目录结构是这样子的


structure.png

说明一下:

www -- 里面放 html 文件
cgi-bin -- 里面放 py 文件
files -- 里面存放 用户上传的文件

接下来是开始写我们简单的 html 页面,请放置于 www 文件夹下
upload.html

<html>
<body>

<form action="http://localhost:8000/cgi-bin/server.py" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input name="uploadfile" type="file"  id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>

接下来写 server.py ,放置于 cgi-bin 文件夹内

#!/usr/bin/python
#coding=utf-8
# Import modules for CGI handling 
import cgi, os
import cgitb; 
cgitb.enable()
form = cgi.FieldStorage()
# Get filename here.
fileitem = form['uploadfile']
# Test if the file was uploaded
if fileitem.filename:
   # directory traversal attacks
   fn = os.path.basename(fileitem.filename)
   # get store path  and save it 
   open(os.getcwd()+'/files/' + fn,'wb').write(fileitem.file.read())

   message = 'The file "' + fn + '" was uploaded successfully'
   
else:
   message = 'No file was uploaded'

print('Content-type:text/html \n\n')
print('file %s' % message)

到此为止,目录结构是这样的


sturcture.png

测试

  1. 可以通过cmd 命令 进入到 www 所在目录
进入到www目录.png
  1. 执行 python3 内置的 CGIHTTPServer 服务
python -m http.server --cgi
run server.png
  1. 浏览器打开页面
http://localhost:8000/upload.html
upload.html
  1. 测试一下提交文件
    桌面上准备个图片


    prepare image.png

    选择图片


    selet file.png
    提交
    submit.png

查看 files 目录

success.png

再测试提交一个 txt 文件


txt file .png

上传成功


uploaded.png

查看 files 目录

image.png
上一篇下一篇

猜你喜欢

热点阅读