python 实现图片上传接口开发 并生成可以访问的图片url


Posted in Python onDecember 18, 2019

版本:python3.7

功能,开发一个用户访问的页面,支持图片上传,并将其保存在服务器。

项目结构:

python 实现图片上传接口开发 并生成可以访问的图片url

app.py文件内容如下:

from flask import Flask, Response, request, render_template
from werkzeug.utils import secure_filename
import os
 
app = Flask(__name__)
 
 
# 设置图片保存文件夹
UPLOAD_FOLDER = 'photo'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
 
# 设置允许上传的文件格式
ALLOW_EXTENSIONS = ['png', 'jpg', 'jpeg']
 
 
# 判断文件后缀是否在列表中
def allowed_file(filename):
  return '.' in filename and filename.rsplit('.', 1)[-1] in ALLOW_EXTENSIONS
 
 
# 上传图片
@app.route("/photo/upload", methods=['POST', "GET"])
def uploads():
  if request.method == 'POST':
    # 获取post过来的文件名称,从name=file参数中获取
    file = request.files['file']
    if file and allowed_file(file.filename):
      print(file.filename)
      # secure_filename方法会去掉文件名中的中文
      file_name = secure_filename(file.filename)
      # 保存图片
      file.save(os.path.join(app.config['UPLOAD_FOLDER'], file_name))
      return "success"
    else:
      return "格式错误,请上传jpg格式文件"
  return render_template('index.html')
 
 
# 查看图片
@app.route("/photo/<imageId>.jpg")
def get_frame(imageId):
  # 图片上传保存的路径
  with open(r'C:/Users/Administration/Desktop/photo_ceshi/photo/{}.jpg'.format(imageId), 'rb') as f:
    image = f.read()
    resp = Response(image, mimetype="image/jpg")
    return resp
 
 
if __name__ == "__main__":
  app.run(host='0.0.0.0', port=5000, debug=True)

index.html内容如下:

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
  <meta charset="UTF-8">
  <title>Upload</title>
</head>
<h1>请上传图片文件</h1>
<form action="" method=post enctype=multipart/form-data>
<p><input type=file name=file>
<input type=submit value=Upload>
</form>

启动app.py文件后,我们先访问 http://127.0.0.1:8002/photo/upload

1、页面如下:

python 实现图片上传接口开发 并生成可以访问的图片url

2、我们先上传一张 1001.jpg,提交后界面如下:

python 实现图片上传接口开发 并生成可以访问的图片url

3、然后我们尝试通过图片url来访问这张图片:

python 实现图片上传接口开发 并生成可以访问的图片url

搞定收工!

以上这篇python 实现图片上传接口开发 并生成可以访问的图片url就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django集成百度富文本编辑器uEditor攻略
Jul 04 Python
python操作CouchDB的方法
Oct 08 Python
讲解Python中for循环下的索引变量的作用域
Apr 15 Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 Python
详解python3中socket套接字的编码问题解决
Jul 01 Python
PyQt5每天必学之创建窗口居中效果
Apr 19 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
jupyter notebook清除输出方式
Apr 10 Python
Python requests模块cookie实例解析
Apr 14 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
Python爬虫基础之爬虫的分类知识总结
May 13 Python
Python谱减法语音降噪实例
Dec 18 #Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 #Python
使用python 对验证码图片进行降噪处理
Dec 18 #Python
如何使用Python多线程测试并发漏洞
Dec 18 #Python
Python实现图像去噪方式(中值去噪和均值去噪)
Dec 18 #Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 #Python
Django中使用MySQL5.5的教程
Dec 18 #Python
You might like
PHP 面向对象详解
2012/09/13 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
vue引入jq插件的实例讲解
2017/09/12 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
python实现TF-IDF算法解析
2018/01/02 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
基于python实现地址和经纬度转换
2020/05/19 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
计算机专业个人求职信范例
2013/09/23 职场文书
五型班组建设方案
2014/02/10 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
Nginx利用Logrotate实现日志分割
2022/05/20 Servers