gpt4 book ai didi

python - 如何在 flask api 的 url 中给出双斜杠

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:56 30 4
gpt4 key购买 nike

我需要将一个字符串传递给一个 api,它是一个文件路径来处理文件并返回输出。示例:url 是

122.23.198.198:5000/D:/FILES/meta.pdf

这里的问题是文件在linux机器中的路径是/D:/FILES/meta.pdf。问题出在 D 之前的斜线:如何在我的 flask api 路由中转义/添加双斜线。我目前收到找不到文件的错误消息。

引用代码:

app = Flask(__name__)
api = Api(app)
class ectdtext(Resource):
def get(self, result):
return {'data': ectd.convert(result)}

#api.add_resource(ectdtext, '/ectd/<result>')
#categorie

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def get_dir(path):
categories = convert(path)
return categories

#@app.route('/get_dir/<path>')
#def get_dir(path):
# return path

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

最佳答案

所以,基本上,你想将 Linux 风格的路径转换为 ​​Windows 风格,那么你可以使用 os.path.abspath:

>>> os.path.abspath('/D:/FILES/meta.pdf')
'D:\\FILES\\meta.pdf'

您需要将代码更改为:

import os  # <--

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def get_dir(path):
categories = os.path.abspath(path) # <--
return categories

但是,我建议在 View 函数中接受相对 URL,然后将它与基本路径结合起来,例如:

import os

basedir = 'the base dir that stores the upload files'

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def get_dir(path):
categories = os.path.join(basedir, path)
return categories

或者出于安全考虑,您可能需要过滤路径:

>>> from werkzeug import secure_filename
>>> secure_filename('the path')

关于python - 如何在 flask api 的 url 中给出双斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57023686/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com