我在本地计算机 (MacOS Ventura) 上的 localhost:5000 地址运行我的 Python webapi 应用程序
我创建了一个名为“receivedfiles”的目录,myapp.py 位于其中。我可以通过 localshot:5000 (或 192.168.1.2 而不是 localhost)访问我的应用程序,并通过我的 webapi 应用程序将文件上传到 receivefiles 目录。
这是我的 webapi 应用程序中用于文件上传的 python 代码
@app.route('/api/uploadfile', methods=['GET','POST'])
def uploadafile():
if 'myfile' not in request.files:
return 'file could not be uploaded.', 400
myfile = request.files['myfile']
if myfile.filename == '':
return 'please specify the filename', 400
# save the file to the receivedfiles folder
myfile.save('receivedfiles/' + myfile.filename)
return 'successfully uploaded', 200
此代码可以正常工作。
这是相关树:
.../myapp.py > my python webapi runs
.../receivedfiles/ > a directory for files
.../receivedfiles/sampleimage1.png > a file under that directory
192.168.1.2:5000/receivedfiles/ > relative path under localhost (192.168.1.2)
Users/myusername/myprojects/mypyhtonprojects/webapiproject1/receivedfiles/ is the absoulte (physical) path. I can access to the file via file:///Users/myusername/myprojects/mypyhtonprojects/webapiproject1/receivedfiles/sampleimage1.png on browser.
但是当我尝试从浏览器和/或例如通过 192.168.1.2:5000/receivedfiles/sampleimage1.png (我也尝试过没有端口号)直接访问文件时我的扑动应用程序,它返回“未找到”消息。
如何通过 localhost(或 /receivedfiles 路径以及该目录下的文件访问文件?
PS:我通过物理路径到达该文件夹并共享给任何访问。
感谢您的帮助。
Web 服务器无法访问项目中的所有文件。您应该将 Flask 集成到该项目中,将所需的文件或文件夹指定为静态,以便 Web 服务器可以访问它。应该就这么简单
`
from flask import Flask, send_from_directory
app = Flask(__name__)
# (your existing code)
@app.route('/uploads/<filename>') #New route for serving uploads
def uploaded_file(filename):
return send_from_directory('receivedfiles', filename)
'
send_from_directory 是一个 Flask 函数,用于从指定目录提供文件。 新路由 /uploads/ 允许您访问以下文件: 192.168.1.2:5000/上传/sampleimage1.png