Django AttributeError at/upload_to_vimeo/“TypeError”对象没有属性“message”

Django AttributeError at/upload_to_vimeo/“TypeError”对象没有属性“message”,django,vimeo-api,Django,Vimeo Api,将视频上载到vimeo时会抛出此错误 以下是代码 观点 模板 <form action="" method="POST" enctype="multipart/form-data"> {% csrf_token %} <input type="file" name="video_file">

将视频上载到vimeo时会抛出此错误 以下是代码 观点

模板

 <form action="" method="POST" enctype="multipart/form-data">
                    {% csrf_token %}
                    <input type="file" name="video_file">
                    <input type="submit" class="button inline-block bg-theme-1 text-white mt-5" value="Upload">
                </form>

Vimeo端的一些粗心的编码,细微的差别如下所示:

尝试: …:int不是int …:除ValueError为e外: …:printe是异常:{}/{}。formattypee是异常,isInstance,exception ...: e是一个例外:False/True 因此,对于exception read:always的任何子类,它们的异常检查都失败。由于它们不会抛出带有消息属性的异常,因此您最终会得到一个AttributeError

但无论如何,你不会有太多的事情要做,因为如果他们编码正确,他们会告诉你:“通过tus上传时出现意外错误。”。归根结底,您无法在3次重试内从Tus中获得重新启动当前区块上载的偏移量。祝你狩猎好运

发表评论 request.FILES是一个文件对象数组。不是一个文件名数组。api需要文件名,但他们不检查是否获得了文件名或是否支持类似文件的对象。他们也做可怕的事情:

尝试: 返回os.path.getsizefilename 除类型错误外: 返回lenfilename.read 所以理论上它们支持类似文件的对象,但显然不完全支持。此外,lenfilename.read对服务器内存非常危险,尤其是对于并行的视频文件,因为整个文件都将被读取到内存中。我越是阅读这个API,就越不想使用它

无论如何,您应该将以下内容添加到设置中:

FILE_UPLOAD_HANDLERS = [
 'django.core.files.uploadhandler.TemporaryFileUploadHandler'
]  # Removed MemoryFileUploadHandler
正如所评论的那样,这将删除,因此我们可以依赖于我们的可用性。此外,Django根据我上次检查的从内存到磁盘的文件大小(大约3MB),在内存和磁盘存储之间切换。这是一个很少使用的b,API不会与它们一起工作

然后将路径传递到Vimeo:

file_obj=request.FILES['video_file'] 路径=文件\对象。临时文件\路径方法非属性 尝试: v、 上传路径 除VimeOutloadFailure外: 普林图 最后: file_obj.close这将删除该文件 如果os.path.existspath: os.unlinkpath,但这将完成此操作,权限除外
Vimeo端的一些粗心的编码,细微的差别如下所示:

尝试: …:int不是int …:除ValueError为e外: …:printe是异常:{}/{}。formattypee是异常,isInstance,exception ...: e是一个例外:False/True 因此,对于exception read:always的任何子类,它们的异常检查都失败。由于它们不会抛出带有消息属性的异常,因此您最终会得到一个AttributeError

但无论如何,你不会有太多的事情要做,因为如果他们编码正确,他们会告诉你:“通过tus上传时出现意外错误。”。归根结底,您无法在3次重试内从Tus中获得重新启动当前区块上载的偏移量。祝你狩猎好运

发表评论 request.FILES是一个文件对象数组。不是一个文件名数组。api需要文件名,但他们不检查是否获得了文件名或是否支持类似文件的对象。他们也做可怕的事情:

尝试: 返回os.path.getsizefilename 除类型错误外: 返回lenfilename.read 所以理论上它们支持类似文件的对象,但显然不完全支持。此外,lenfilename.read对服务器内存非常危险,尤其是对于并行的视频文件,因为整个文件都将被读取到内存中。我越是阅读这个API,就越不想使用它

无论如何,您应该将以下内容添加到设置中:

FILE_UPLOAD_HANDLERS = [
 'django.core.files.uploadhandler.TemporaryFileUploadHandler'
]  # Removed MemoryFileUploadHandler
正如所评论的那样,这将删除,因此我们可以依赖于我们的可用性。此外,Django根据我上次检查的从内存到磁盘的文件大小(大约3MB),在内存和磁盘存储之间切换。这是一个很少使用的b,API不会与它们一起工作

然后将路径传递到Vimeo:

file_obj=request.FILES['video_file'] 路径=文件\对象。临时文件\路径方法非属性 尝试: v、 上传路径 除VimeOutloadFailure外: 普林图 最后: file_obj.close这将删除该文件 如果os.path.existspath: os.unlinkpath,但这将完成此操作,权限除外
如果我上传视频文件directlyv.upload'test1.mp4'而不是一个表单,它可以正常工作,没有错误,但是用户需要上传它,所以还有其他选择吗?除了获取FileException类型的表单之外:AttributeError at/upload_to_vimeo/Exception Value:'function'对象没有属性'read',这是新的错误抱歉,这是一个方法而不是属性。非常感谢!!你救了我的饭碗!!如果我上传视频文件directlyv.upload'test1.mp4'而不是一个表单,它可以正常工作,没有错误,但是用户需要上传它,所以还有其他选择吗?另外
而不是获取FileException类型的表单:AttributeError at/upload_to_vimeo/Exception Value:'function'对象没有属性'read',这是新的错误抱歉,这是一个方法而不是属性。非常感谢!!你救了我的饭碗!!
FILE_UPLOAD_HANDLERS = [
 'django.core.files.uploadhandler.TemporaryFileUploadHandler'
]  # Removed MemoryFileUploadHandler