我想将图像文件存储在S3中,将视频文件存储在我的django项目中的Vimeo中。我是perl
的{{1}}作为存储后端。由于Vimeo负责视频文件的压缩和内容传输,与S3相比价格便宜,我想将其用于视频文件。
我想过使用django模型的S3Boto3Storage
中的Django-storage
属性将文件上传到Vimeo,但我无法获取视频文件的绝对路径方法。
这是我对upload_to
方法的实现,
FileField
但它给了我这个错误
OSError:[Errno 2]没有这样的文件或目录:' videoplayback.mp4'
或者我可以为我的目的自定义upload_to
。我想知道什么是更好的解决方案。
修改 这是完整的堆栈跟踪
import vimeo
def vimeo_client():
client = vimeo.VimeoClient(
token=settings.VIMEO_ACCESS_TOKEN,
key=settings.VIMEO_CLIENT_ID,
secret=settings.VIMEO_CLIENT_SECRET
)
return client
def get_media_path(instance, filename):
new_filename = '{}.{}'.format(uuid.uuid4(), filename.split('.')[-1])
if instance.type == 'image':
file_path = 'posts/media/images/{filename}'.format(
filename=new_filename)
else:
client = vimeo_client()
file_path = client.upload(
filename,
data={
'name': instance.title,
'description': instance.description
}
)
logger.info("File uploaded to: [{}]".format(file_path))
return file_path