我想使用Boto3将视频文件上传到AWS S3存储桶。我已经创建了一个名为“ django-test”的存储桶,并具有所需的权限。我正在使用Django,并且正在Windows 10计算机上工作。
我在Django应用的store_in_s3
文件中创建了一个名为views.py
的函数。
预期的文件大小小于200mbs。我对尝试过的几种方法感到有些困惑。下面是现有代码
def store_in_s3(request):
transfer = S3Transfer(boto3.client(
's3',
region_name = settings.AWS_S3_REGION_NAME,
aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY
))
client = boto3.client('s3')
bucket = "django-test"
file = request.FILES["file"]
filename = file.name
transfer.upload_file(filename, bucket, "test.mov")
这时,我收到以下错误:FileNotFoundError: [WinError 2] The system cannot find the file specified: 'test.mov'
但是test.mov
是我使用HTML表单上传的文件。
我的HTML格式代码如下:
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.file }}
<button type="submit">Submit</button>
</form>
其他信息:在此开发过程中,我成功地一次上传了视频文件,但是在S3上,它的大小非常小-仅28字节。这就是为什么我重新开始构建上传器的原因。
非常感谢您的帮助。如果您需要有关此问题的更多信息,请随时。谢谢。
答案 0 :(得分:1)
正如您提到的,文件大小大于2 MB,Django将其存储在临时位置。从错误消息中,似乎找不到文件名。因此,请通过传递临时位置路径来进行尝试,在这种情况下,即file.temporary_file_path()