如何使用“send\u file()”保持文件的权限?

2024-10-01 17:40:22 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个名为lhosts的文件,它是可执行的:

-rwxr-xr-x 1 kevin kevin 2.4K Apr 27 21:16 lhosts*

下面是我使用Flask.send_file()发送文件的代码:

#!/usr/bin/env python3
from flask import Flask, send_file

app = Flask(__name__)


@app.route('/lhosts')
def lhosts():
    return send_file('scripts/lhosts')


app.run(debug=True)

但是,当我试图将文件发送给客户端时,它没有保留权限。权限变得不可执行:

> wget 'http://127.0.0.1:5000/lhosts' --preserve-permissions
--2016-04-27 22:27:39--  http://127.0.0.1:5000/lhosts
Connecting to 127.0.0.1:5000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2381 (2.3K) [application/octet-stream]
Saving to: ‘lhosts’

lhosts                             100%[================================================================>]   2.33K  --.-KB/s    in 0s      

2016-04-27 22:27:39 (76.7 MB/s) - ‘lhosts’ saved [2381/2381]

> ls -lh lhosts 
-rw-r--r-- 1 kevin kevin 2.4K Apr 27 21:16 lhosts

如何保持文件的可执行性?你知道吗


Tags: 文件to代码sendapphttp权限flask
1条回答
网友
1楼 · 发布于 2024-10-01 17:40:22

你不能直接。权限等元数据是文件系统的一部分,与每个文件关联,但不是文件数据的一部分。你知道吗

下载的HTTP响应看起来和其他响应一样:一些头和一个主体。正文是文件的二进制数据,头只是类型、编码和文件名提示,实际上这些都不是必需的。你知道吗

您可以创建一个方案来对头中的权限或其他元数据进行编码,但是您需要在接收端编写自定义代码来处理这些内容。您还需要考虑到除了代码之外的其他东西可以下载您的文件,并且Windows和Unix的权限不同。你知道吗

相关问题 更多 >

    热门问题