我正在创建一个自动化工具,使用给定的策略、签名和其他参数将图像上传到AmazonS3。我可以在邮递员或失眠症患者身上轻松地执行此请求,但似乎很难用代码完成。我也试过一些python代码,但不起作用
uploadImage(name, imageBlob, token) {
name += imageBlob.getName()
let data = {
'name': name,
'key': token.key,
'Filename': token.key,
"success_action_status": "201",
'AWSAccessKeyId': token.AWSAccessKeyId,
'policy': token.policy,
'signature': token.signature,
'file': imageBlob
}
// let boundary = "---1011100000110100";
// let rawdata = "";
// for (let i in data) {
// rawdata += "--" + boundary + "\r\n";
// rawdata += "Content-Disposition: form-data; name=\"" + i + "\"; \r\n\r\n" + data[i] + "\r\n";
// }
// rawdata += "--" + boundary + "--\r\n";
// console.log(data.key)
const url = 'https://s3.amazonaws.com/someExPath/'
const headers = {
'content-type': "multipart/form-data",
}
const opt = {
contentType: 'multipart/form-data',
headers: headers,
method: 'post',
payload: data,
followRedirects: true,
muteHttpExceptions: true
}
let resp = UrlFetchApp.fetch(url, opt)
console.log(resp)
console.log(resp.text)
return name
}
这是我的python代码
import requests
url = "https://s3.amazonaws.com/samplePath/"
payload={
'name': 'demo1.jpg',
'key': 'tmp/sampleIds=/${filename}',
'Filename': 'tmp/sampleIds=/${filename}',
'success_action_status': '201',
'AWSAccessKeyId': 'AKIAIDO4Q6WXHCGAMHIA',
'policy': 'sample polici',
'signature': 'sample sig'
}
files=[
('file',('demo1.jpg',open('demo1.jpg','rb'),'image/jpeg'))
]
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36',
'content-type': 'multipart/form-data'
}
resp = requests.post(url, headers=headers, data=payload, files=files)
google应用程序脚本返回:POST请求的主体不是格式良好的多部分/表单数据。 Python脚本甚至无法完成请求,它得到了一个ConnectionError(查看下面链接上的图片)
我试着把它当作一个未加工的身体来传递,但还是不起作用。我得到的最接近的一个是用Utilities.base64Encode(imageBlob.getBytes())替换imageBlob,然后将其放在原始文本体上(检查注释代码),我得到了成功代码,但重新检查时它是无效的图像。这是我找到的文件:https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingHTTPPOST.html
您可以在此处查看我的成功邮递员请求和我的python代码: https://drive.google.com/drive/folders/1Jb0-OctmXDy_rDD-Jk_N_QyrADHKamB2?usp=sharing
谢谢
我删除了“内容类型”,它适用于python脚本和Google应用程序脚本
相关问题 更多 >
编程相关推荐