IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> flask(九)----jquery请求实现文件上传与访问 -> 正文阅读

[Python知识库]flask(九)----jquery请求实现文件上传与访问

1.文件上传的html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
    <!--引入jquery-->
    <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="f">
        <br>
        <br>
        <input type="submit">

    </form>
    
    <!--此处script标签与文件上传功能无关-->
     <script>
            function send_ajax(){
                $.ajax({
                    url:'http://127.0.0.1:5000',
                    data:JSON.stringify({username:'chuntian',pwd:'123'}),
                    type:'POST',
                    dataType:'json',
                    contentType:'application/json',   <!--此处指定为'appliction/json'格式,则jquery请求在后台接收用request.json;-->
                                                        <!--若没有指定'application/json'格式,后台接收用request.form。-->
                    success:function(data){
                        alert('成功')
                    }
                });
            }
      </script>

</body>
</html>

?2.后台处理

from flask import Flask, request, render_template

app = Flask(__name__,
            template_folder='static')

app.config['MAX_CONTENT_LENGTH'] = 10 * 1024 * 1024     # 限制上传的文件大小

def allowed_files(filename):
    format_list = ['jpg', 'png', 'gif']
    file_type = filename.split('.')[1]
    if file_type in format_list:
        return True
    return False
    

@app.route('/upload', methods=['GET', 'POST'])
def upload():
    file = request.files.get('f')  # 从请求过来的数据中获取file,根据前端form表单中的文件name属性获取
    if file is None:
        return render_template('index.html')
    if allowed_files(file.filename):
        file.save(file.filename)  # 根据文件名保存
        return 'save success'
    return 'error'


app.run(debug=True)

3.实现效果:

?4.让文件可以被访问

import os

from flask import Flask, request, render_template, send_from_directory
from werkzeug.utils import secure_filename

app = Flask(__name__,
            template_folder='static')

app.config['MAX_CONTENT_LENGTH'] = 10 * 1024 * 1024     # 限制上传的文件大小

def allowed_files(filename):
    format_list = ['jpg', 'png', 'gif']
    file_type = filename.split('.')[1]
    if file_type in format_list:
        return True
    return False


@app.route('/upload', methods=['GET', 'POST'])
def upload():
    file = request.files.get('f')  # 从请求过来的数据中获取file,根据前端form表单中的文件name属性获取
    if file is None:
        return render_template('index.html')
    if allowed_files(file.filename):
        file.save(secure_filename(file.filename))  # 根据文件名保存,secure_filename:会自动将前端的输入去掉空格,填充格式,避免问题
        return 'save success'
    return 'error'


@app.route('/upload/<filename>', methods=["GET"])
def get_file(filename):
    return send_from_directory(os.getcwd(), filename)  # 前端访问时需要返回的数据


app.run(debug=True)

实现效果:

通常,我们把上传的图片的地址保存在数据库中,从数据库读取数据时,返回数据的地址,后端根据返回的地址查找图片。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:06:24  更:2022-03-17 22:06:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 19:26:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码