IIS部署flask之实现文件上传功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IIS部署flask之实现文件上传功能相关的知识,希望对你有一定的参考价值。
1、环境
windows 7 x64
IIS 6
python 2.7.9
wfastcgi-3.0.0
flask-0.12.2
2、安装wfastcgi,并启动wfastcgi
pip install wfastcgi
C:\Users\wangpan>D:\software\Python27\Scripts\wfastcgi-enable.exe
已经在配置提交路径“MACHINE/WEBROOT/APPHOST”向“MACHINE/WEBROOT/APPHOST”的“system.webServer/fastCgi”节应用了配置更改
“d:\software\python27\python.exe|d:\software\python27\lib\site-packages\wfastcgi.pyc” can now be used as a FastCGI script processor
3、安装flask
pip install flask
4、打开windows功能,安装IIS,启用CGI
5、安装URL重写
IIS 需要安装 URL 重写组件,这个可以通过Microsoft Web Platform Installer来安装。下载Microsoft Web Platform Installer后运行,搜索URL,安装URL重写工具。
6、配置IIS
6.1 添加网站,根目录是d:\data\mysite\upload
6.2 d:\data\mysite\upload目录结构
upload
–static上传目录的静态文件目录
–upload.py上传文件程序
–web.config配置文件
6.3 upload目录下web.config内容
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="FlaskFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="d:\software\python27\python.exe|d:\software\python27\lib\site-packages\wfastcgi.pyc" resourceType="Unspecified" requireAccess="Script" /> </handlers> <security> <requestFiltering allowDoubleEscaping="true"></requestFiltering> </security> <directoryBrowse enabled="true" /> </system.webServer> <appSettings> <!-- Required settings --> <add key="WSGI_HANDLER" value="upload.app" /> <add key="PYTHONPATH" value="~/" /> <!-- Optional settings --> <add key="WSGI_LOG" value="d:\data\mysite\logs\oboeqa_web.log" /> <add key="WSGI_RESTART_FILE_REGEX" value="" /> </appSettings> </configuration>
注意:
scriptProcessor的内容是执行wfastcgi-enable的输出
WSGI_HANDLER的value
PYTHONPATH的value
WSGI_LOG的目录一定要存在
6.4 upload.py上传文件的代码
#_*_coding:utf-8_*_ import os from flask import Flask, request, redirect, url_for,render_template from werkzeug import secure_filename from flask import send_from_directory UPLOAD_FOLDER = ‘d:\data\mysite\upload\static‘ ALLOWED_EXTENSIONS = set([‘txt‘, ‘docx‘, ‘doc‘, ‘xlsx‘ , ‘xls‘,‘ppt‘ , ‘pdf‘, ‘png‘, ‘jpg‘, ‘jpeg‘, ‘gif‘]) app = Flask(__name__) app.config[‘UPLOAD_FOLDER‘] = UPLOAD_FOLDER def allowed_file(filename): return ‘.‘ in filename and filename.rsplit(‘.‘, 1)[1] in ALLOWED_EXTENSIONS @app.route(‘/‘, methods=[‘GET‘, ‘POST‘]) def upload_file(): if request.method == ‘POST‘: file = request.files[‘file‘] filename = file.filename if file and allowed_file(filename): #filename = secure_filename(file.filename) file.save(os.path.join(app.config[‘UPLOAD_FOLDER‘], filename)) return redirect(url_for(‘uploaded_file‘,filename=filename)) #return redirect(‘success.html‘) return ‘‘‘ <!doctype html> <title>Upload new File</title> <h1>Upload new File</h1> <form action="" method=post enctype=multipart/form-data> <p><input type=file name=file> <input type=submit value=Upload> </form> ‘‘‘ @app.route(‘/upload/<filename>‘) def uploaded_file(filename): return u‘文件上传成功‘ if __name__ == ‘__main__‘: app.run()
7、flask学习网站
http://docs.jinkan.org/docs/flask/
本文出自 “走在路上的朋友” 博客,请务必保留此出处http://supan.blog.51cto.com/7405859/1956899
以上是关于IIS部署flask之实现文件上传功能的主要内容,如果未能解决你的问题,请参考以下文章