获取上传到Flask的文件路径

3
我有一个Python网络应用程序,在本地运行于网页浏览器,方便用户界面、处理用户选择的文件并保存已处理数据。我需要添加一个功能,即在选择的文件所在的同一文件夹中创建一个新的子目录(即如果文件位于path/fname.txt,则需要创建path/fname/目录以存放已处理数据)。如何访问此文件的路径?
在其他项目中,我曾要求单独获取路径,但这很笨拙,我不想每个文件都强迫用户执行这个多余的步骤。
@app.route('/getthefile', methods=['POST'])
def getthefile():
    file = request.files['myfile']
    filename = secure_filename(file.filename)
    new_path = os.path.abspath(filename)
    # gives me the wrong path

你是如何解决这个问题的? - Navi
@Navi 这个能帮到你吗?链接 - Gitau Harrison
页面未找到@GitauHarrison - Navi
1个回答

5
为了不暴露客户端系统的不必要信息,HTTP请求只发送文件名,不发送完整路径。请查看HTTP多部分/表单数据请求
Content-Type: multipart/form-data; boundary=AaB03x

--AaB03x
Content-Disposition: form-data; name="submit-name"

Larry
--AaB03x
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain

... contents of file1.txt ...
--AaB03x--

正如您所看到的,信息非常少。路径未提供。

同样,文件 API 仅允许访问文件名。

因此,不幸的是,您将无法从文件输入中获取完整路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接