Python 如何通过put请求从上载中获取文件名

Python 如何通过put请求从上载中获取文件名,python,httprequest,flask-restful,http-put,Python,Httprequest,Flask Restful,Http Put,我正在使用Flask restplus开发API。其中一个端点处理音频文件上载,音频文件上载可以是mp3或wav格式。根据,由put上传的文件位于request.data或request.stream中。这就是我所做的: @ns.route('/upload') class AudioUpload(Resource): def put(self): now = datetime.now() filename = now.strftime("%Y%m%d_%

我正在使用Flask restplus开发API。其中一个端点处理音频文件上载,音频文件上载可以是
mp3
wav
格式。根据,由
put
上传的文件位于
request.data
request.stream
中。这就是我所做的:

@ns.route('/upload')
class AudioUpload(Resource):
    def put(self):
        now = datetime.now()
        filename = now.strftime("%Y%m%d_%H%M%S") + ".mp3"
        cwd = os.getcwd()
        filepath = os.path.join(cwd, filename)
        with open(filepath, 'wb') as f:
            f.write(request.stream.read())
        return filepath
我正在将文件保存为
mp3
。但是,有时文件以
wav
的形式出现。是否有类似于
post
request的方法从put请求中获取原始文件名:

file = request.files['file']
filename = file.filename

您使用PUT请求而不是POST请求是否有原因?如果您希望覆盖此音频文件值,那么我想PUT请求是有意义的,但是POST vs PUT取决于您的判断,因此您可以选择使用POST而不是PUTPUT@JamesRusso我们的客户,API的使用者坚持使用PUT请求而不是POST,我不太理解这一点。PUT通常意味着请求应该指向一个唯一的url。例如
PUT/upload/good vibrations.mp3
。在这种情况下,您可以简单地从url路由获取文件名。确定正确文件类型的最佳方法是检查文件内容。文件扩展名丢失或不正确是很常见的。您可以使用linux
file
命令或
python magic
来区分wav文件和mp3文件@哈肯利德,我以前从未和他打过交道。您能否更具体地说明如何从请求url获取文件名?