使用Python上传Adobe AEM的问题-将curl命令转换为请求

问题描述 投票:0回答:2

[尝试将此curl命令转换为python。

curl -u admin:xxxxxxxx -F file=@"package.zip" -F name="package.zip" -F force=true -F install=true http://host:port/crx/packmgr/service.jsp

尝试使用此方法,获得200成功代码,但打印响应文本并查看服务器显示上传无效。有人可以告诉我我在做什么错吗?

    import requests

    files = {
        'file': ('package.zip', open('package.zip', 'rb')),
        'name': (None, 'package.zip'),
        'force': (None, 'true'),
        'install': (None, 'true'),
    }

    response = requests.post('http://host:port/crx/packmgr/service.jsp', files=files, auth=('admin', 'xxxxxxxx'))


    print(response.headers)
    print(response.text)
python aem
2个回答
0
投票

我认为您缺少导入基本身份验证的权限

from requests.auth import HTTPBasicAuth

response = requests.post('http://host:port/crx/packmgr/service.jsp', 
files=files, auth=HTTPBasicAuth('admin', '****'))

更新:

 import requests
 from requests.auth import HTTPBasicAuth
 url = 'http://localhost:4502/crx/packmgr/service.jsp'
 files = { 'file': ('mypackage.zip', 
 open('/Users/zospakir/Projects/mypackage.zip', 'rb'), 
 'application/zip')}
 data = dict(name='mypackage.zip', force='true',install='true')
 response = requests.post(url, files=files, data=data, auth=('admin', 
 '***'))

0
投票

想通了。

问题在于如何解析源文件。

   datafile=fullfile + "/" + filename
   url = "http://{}:{}/crx/packmgr/service.jsp".format(server,port)
   form_data = dict(
        file=(filename, open(datafile, 'rb'), 'application/zip', dict()),
        name=package.rstrip('.zip'),
        strict=True,
        force=(None, 'true'),
        install=(None, 'true')
   )
   resp = requests.post(url, auth=('admin', passwd), files=form_data)   
   if resp.status_code == 200:
       print(resp.headers)
       print(resp.text)
       print('Success!...  Response code 200')
       status = "Upload of " + package + " to " + url + "successful"
       package_location=pkg_group(resp.text)
       package_path=package_location + "/" + package
       #mailer.send(status,resp.text)
   else:
       print(resp.headers)
       print(resp.text)
       status='Upload of ' + package +  'Error detected!'
       sys.exit(1)
© www.soinside.com 2019 - 2024. All rights reserved.