Flask保存或解压上传的文件
import os
import uuid
import shutil
import zipfile
from flask import Flask, render_template, request
# from werkzeug.datastructures import FileStorage app = Flask(__name__) BASE_DIR = os.path.dirname(os.path.abspath(__file__)) def unzip_file(zip_src, dst_dir):
"""
解压zip文件
:param zip_src: zip文件的全路径
:param dst_dir: 要解压到的目的文件夹
:return:
"""
r = zipfile.is_zipfile(zip_src)
if r:
fz = zipfile.ZipFile(zip_src, "r")
for file in fz.namelist():
fz.extract(file, dst_dir)
else:
return "请上传zip类型压缩文件" @app.route("/upload", methods=["GET", "POST"])
def upload():
if request.method == "GET":
return render_template("upload.html")
obj = request.files.get("file")
print(obj) # <FileStorage: "test.zip" ("application/x-zip-compressed")>
print(obj.filename) # test.zip
print(obj.stream) # <tempfile.SpooledTemporaryFile object at 0x0000000004135160>
# 检查上传文件的后缀名是否为zip
ret_list = obj.filename.rsplit(".", maxsplit=1)
if len(ret_list) != 2:
return "请上传zip类型压缩文件"
if ret_list[1] != "zip":
return "请上传zip类型压缩文件" # 方式一:直接保存文件
obj.save(os.path.join(BASE_DIR, "files", obj.filename)) # 方式二:保存解压后的文件(原压缩文件不保存)
target_path = os.path.join(BASE_DIR, "files", str(uuid.uuid4()))
shutil._unpack_zipfile(obj.stream, target_path) # 方式三:先保存压缩文件到本地,再对其进行解压,然后删除压缩文件
file_path = os.path.join(BASE_DIR, "files", obj.filename) # 上传的文件保存到的路径
obj.save(file_path)
target_path = os.path.join(BASE_DIR, "files", str(uuid.uuid4())) # 解压后的文件保存到的路径
ret = unzip_file(file_path, target_path)
os.remove(file_path) # 删除文件
if ret:
return ret return "上传成功" if __name__ == "__main__":
app.run()
Flask保存或解压上传的文件的更多相关文章
- PHP自动解压上传的rar文件
PHP自动解压上传的rar文件 浏览:383 发布日期:2015/07/20 分类:功能实现 关键字: php函数 php扩展 大家都知道php有个zip类可直接操作zip压缩文件,可是用户有时候 ...
- 解压上传的zip文件流和文件
/** * 解压上传的zip文件流 * @param stream * @param outputDirectory */ public static String unzip(InputStream ...
- Java解压上传zip或rar文件,并解压遍历文件中的html的路径
1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception { HttpSession session = request.getSe ...
- SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html
SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html 说明: 1.环境:SpringMVC+Spring+Tomcat7+JDK1.7 2.支持 zip和rar格式的压 ...
- C# 上传RAR文件 解压 获取解压后的文件名称
此方法适用于C盘windows文件夹中有WinRAR.exe文件 if (fileExt.ToUpper() == ".RAR") { string zpath = Server. ...
- 【转】 .Net MVC4 上传大文件,并保存表单
1前台:cshtml </pre><pre name="code" class="csharp">@model BLL.BLL.Prod ...
- .Net MVC4 上传大文件,并保存表单
1. 前台 cshtml </pre><pre name="code" class="csharp">@model BLL.BLL.Pr ...
- php上传zip文件在线解压文件在指定目录下,CI框架版本
我从网上找的文件php在线解压zip压缩文件 文件为jy.php可以直接执行,但是怎样将其加到CI框架中呢?? jy.php文件 <?php header("content-Type: ...
- flask插件系列之flask_uploads上传文件
前言 flask可以实现上传文件和下载文件的基本功能,但如果想要健壮的功能,使用flask_uploads插件是十分方便的. 安装 pip install flask_uploads 基本使用 # e ...
随机推荐
- 通过绑定ip地址可以暂时解决抢占ip问题
以前设置的路由器密码都忘记了 admin重复,在工作上遇到了 一个去除str左右两边的空格换行符回车等 trim
- Excel设定编辑列权限的方法
工具---保护--允许用户编辑区域 --新建-- 选择(或输入)引用单元格 ,区域密码:对不同的人不同的区域用不同的密码,设置完成后,保护工作表(密码用管理员的),即可
- Python 返回多个值+Lambda的使用
def MaxMin(a,b): if(a>b): return a,b else: return b,a max,min=MaxMin(8,95) print "最大值为:" ...
- bzoj 1034: [ZJOI2008]泡泡堂BNB【贪心】
是贪心 先把两个数组排序,然后贪心的选让a数组占优的(如果没有就算输),这是最大值,最小值是2n-贪心选b数组占优 #include<iostream> #include<cstdi ...
- 流程图软件draw.io
工作中经常需要梳理一些流程图,时序图.以前用微软Visio绘制流程图(当然不是正版Visio).后来为了响应国家号召,改用processon(proceson.com)进行绘制流程图.Processo ...
- Java多线程(一) Thread和 Runnable
http://www.cnblogs.com/lwbqqyumidi/p/3804883.html 1.继承Thread 2.实现Runnable接口 public class MyRunnable ...
- [译]curl_multi_perform
http://curl.haxx.se/libcurl/c/curl_multi_perform.html curl_multi_perform.3 -- man page NAMEcurl_mult ...
- asp.net ajax get post 中文乱码解决办法
前台: var username = $("#UserName").val(); var tel = $("#tel").val(); var yzm = $( ...
- MVC之模型绑定
1.前言 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方 ...
- 87. [NOIP2000] 乘积最大
★☆ 输入文件:cjzd.in 输出文件:cjzd.out 简单对比 时间限制:1 s 内存限制:128 MB 问题描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国 ...