2015-09-25 45 views
3

我想使用REST API将视频文件上传到Openstack容器。 这是我上传到服务器的Python代码。Openstack Rest API使用python将文件发送到OpenStack容器

res = requests.put(publicURL+'/'+output_container_name+'/'+toUpload, 
      headers={'X-Auth-Token': token}, 
      files={'file': open(toUpload,'rb')}) 

您在代码中看到的所有变量都已定义。事实上,我可以看到我的文件上传到容器,但是当我下载它时,我无法播放视频。 当我用文本编辑器打开视频文件时,我在文件的开头和结尾看到了这些标题。

--0b2e78b52dad4b45a43575c1c42b0b9d 
Content-Disposition: form-data; name="file"; filename="input_output.mp4" 
. 
. 
. Normal video content 
. 
. 
--0b2e78b52dad4b45a43575c1c42b0b9d-- 

如何摆脱文件中的这些标题?

编辑:即使当我手动删除标题时,仍然有一些差异,当我检查他们与差异的文件。差异是不可见的行数是相同的,一切看起来都是一样的。

+0

尝试通过'requests.put()''的内容类型:视频/ mp4'头。 –

+0

@mrnick试过它的标题仍然存在 – D3GAN

回答

1

试一试Python OpenStack SDK。

pip install openstacksdk 

上传文件的代码。

import sys 

from openstack import connection 
from openstack import profile 
from openstack import utils 

utils.enable_logging(True, stream=sys.stdout) 

prof = profile.Profile() 
prof.set_region(prof.ALL, "RegionOne") 

conn = connection.Connection(
    auth_url='https://my.identity.endpoint/v2.0/', 
    profile=prof, 
    username="my_username", 
    password="my_password") 

c = conn.object_store.create_container(name='videos') 
obj = conn.object_store.create_object(container=c.name, 
             name='input_output.mp4', 
             data=open('input_output.mp4', 'r'), 
             content_type='video/mp4') 
print(obj) 

更多信息,可能是也有帮助: