Python3 本地测试上传文件
2018-04-21 本文已影响1171人
2010jing
可能刚刚开始很多同学没有接触过HTML,以及一些form表单内的file 不知道如何提交。 本文粗略介绍,一个简单的例子。
准备
本例子是基于 python3 + windows10.
首先,我们可以在任何一个地方 创建一个 文件夹 www
然后在 www
内 再创建两个文件夹 cgi-bin
和 files
目录结构是这样子的
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
测试
- 可以通过cmd 命令 进入到
www
所在目录
- 执行 python3 内置的 CGIHTTPServer 服务
python -m http.server --cgi
run server.png
- 浏览器打开页面
http://localhost:8000/upload.html
upload.html
-
测试一下提交文件
桌面上准备个图片
prepare image.png
选择图片
selet file.png
提交
submit.png
查看 files
目录
再测试提交一个 txt 文件
txt file .png
上传成功
uploaded.png
查看 files
目录