【学习笔记】flask将服务器端的图片资源,暴露给外网访问

需求

服务器通过模型生成的模型我放在了一个文件夹里面。希望前端能访问这些图片,并展示给用户

解决方案

我是用flask制作的后端

from flask import Flask,jsonify,send_from_directory
app = Flask(__name__)
#用来解决跨域问题的,今天的主体不是这个就不详细说了
from flask_cors import CORS
CORS(app)

#存放图片的文件夹的路径
IMAGE_FOLDER = r'C:\Users\ASUS\Desktop\save_img'
@app.route('/image/<filename>')
def serve_image(filename):
    # 检查文件是否存在以及是否是安全的文件名(防止路径遍历攻击)
    file_path = os.path.join(IMAGE_FOLDER, filename)
    if '..' in filename or not os.path.isfile(file_path):
        return "Error: File not found or invalid filename", 404
    # 返回图片文件
    return send_from_directory(IMAGE_FOLDER, filename)

if __name__ == '__main__':
    app.run(debug=True)

这就是我后端实现图片传输功能的主要代码。

在本机可以使用

http://localhost:5000/image/<filename> 

来获取图片,其中 <filename> 是你想要访问的图片文件名。比如,你的图片名称为img.jpg ,那么你在浏览器里面输入这个url,就会打开你的目标图片

http://localhost:5000/image/img.jpg

实际使用过程中,还得做一个内网穿透,才能实现在不一样的网络环境访问本机的图片

做好内网穿透,把localhost:5000换成你自己的域名和端口就行了

这里附一段前端代码用以思考(PS:我这里的域名是假的,举例子用,你们就不用去试着访问我这个了)

<view class="imgcontainer">
			<image v-for="index in 5" :key="index" :src="`http://1008611.gnway.cc:8000/image/img${index}.png`"
				class="image-item" mode="aspectFit" />
		</view>

这段代码的作用是从后端获取五张文件名为img(1-5).png的图片,展示在页面上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值