2015-09-25 61 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) 

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