如何实现远程Flask API读取本地文件路径并暂存文件读取数据?
问题本质
直接给远程Flask接口传本地文件路径完全行不通——远程服务器的文件系统和你的本地电脑是完全隔离的,它根本访问不到你本地的文件。
可行解决方案
1. 改成文件上传接口(最直接可靠)
修改你的Flask服务,让它支持接收文件上传,前端通过表单或multipart/form-data请求把本地文件传给服务器,服务器暂存后再读取处理。
示例代码:
from flask import Flask, request, jsonify import os app = Flask(__name__) # 服务器上的临时存储目录,确保有读写权限 UPLOAD_DIR = "/tmp/flask_temp_uploads" os.makedirs(UPLOAD_DIR, exist_ok=True) @app.route("/extract-data", methods=["POST"]) def extract_data(): # 检查请求里有没有文件 if "file" not in request.files: return jsonify({"error": "没有上传文件"}), 400 file = request.files["file"] if file.filename == "": return jsonify({"error": "未选择文件"}), 400 # 暂存文件到服务器 temp_file_path = os.path.join(UPLOAD_DIR, file.filename) file.save(temp_file_path) # 这里写你的数据提取逻辑 with open(temp_file_path, "r", encoding="utf-8") as f: extracted_data = f.read() # 示例:读取文件内容,换成你的实际处理逻辑 # 可选:处理完删除临时文件,避免占用服务器空间 os.remove(temp_file_path) return jsonify({"extracted_data": extracted_data})
测试用curl命令(替换成你的本地文件路径和服务器地址):
curl -X POST -F "file=@/Users/xxx/local-file.txt" http://your-server-ip/extract-data
2. 把本地文件临时暴露成公网URL
如果不想改接口逻辑,可以把本地文件通过临时工具映射成公网可访问的URL,再把这个URL传给原接口,让接口去拉取文件。
比如用ngrok:
- 本地启动一个简单的文件服务:
python -m http.server 8000
- 用ngrok把本地8000端口映射成公网URL:
ngrok http 8000
- 把ngrok生成的URL加上你的文件路径(比如
https://abc123.ngrok.io/local-file.txt)传给你的Flask接口,接口内部用requests库请求这个URL获取文件内容。
额外说明
除非你的本地电脑和服务器在同一个局域网,并且做了文件共享(比如SMB),否则远程服务器不可能直接读取你本地的文件路径——这种共享方式安全性极低,绝对不推荐用于公网服务。
内容的提问来源于stack exchange,提问作者saicharan sridhara
相关产品推荐
相关产品推荐

