繁体   English   中英

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

[英]Issue with using Python to upload Adobe AEM - converting curl command to requests

试图将 this 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)

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

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', 
 '***'))

弄清楚了。

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

   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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM