Rië*_*iël 8 multipartform-data google-apps-script
我需要将文件上传到第三方服务。这些文件是在 Google Drive 上创建的,我获取了它的 blob 数据。
我想创建一个多部分请求,当我执行 UrlFetchApp Post 时,它现在看起来像这样。
这是字符串形式的有效负载。我有一些生成有效负载的代码。正确格式化不是问题,问题是它应该是的格式。
-----------------0.13accb4c42d338
Content-Disposition: form-data; name="source"; filename="Zzapps.jpg"
Content-Type: application/octet-stream
[[[IMAGE DATA HERE -- OMITTED FOR BREVITY]]]
-----------------0.13accb4c42d338
Content-Disposition: form-data; name="filename"
Zzapps.jpg
-----------------0.13accb4c42d338--
Run Code Online (Sandbox Code Playgroud)
这是执行 UrlFetchApp 命令的代码段。
var authHeaders = {
Authorization: 'OAuth2 '+access_token
}
var params = {
accept: "application/json",
method: 'POST',
payload: payload,
contentType: 'multipart/form-data; boundary='+boundaryKey,
headers: authHeaders,
ContentLength: payload.length,
muteHttpExceptions: true
}
Run Code Online (Sandbox Code Playgroud)
var resx = UrlFetchApp.fetch(url, params);
接收方给出错误(缺少源)。我不确定我的多部分帖子一开始是否正常,我没有找到任何测试 URL 来检查我是否进行了正确的上传。
如何以正确的方式将 blob 数据作为分段上传发送?现在我使用 blob.getDataAsString() <-- 这是正确的吗?
bro*_*wly 13
如果您自己构建有效负载字符串,则需要执行 blob.getBytes(),而不是 blob.getDataAsString()。
然而,还有一个更简单的方法。您无需自己构建有效负载字符串,只需将 javascript 对象设置为有效负载,UrlFetchApp 将自动生成适当的有效负载字符串,选择正确的内容类型、边界和大多数其他选项。只需使用 HTML 表单输入字段的“name”属性作为对象键即可。对于文件,使用 blob 作为键的值。
function sendReportToSteve() {
var url = "https://example.com/stevedore.html";
var form = {
date : new Date(),
subject : "Happy birthday!",
comment : "quakehashprismkeepkick",
attachment1 : DriveApp.getFileById("sH1proy0lradArgravha9ikE").getBlob(),
attachment2 : DriveApp.getFileById("traCetRacErI3hplVnkFax").getBlob()
};
uploadFile(url,form);
}
function uploadFile(url,form) {
var options = {
method : "POST",
payload : form
};
var request = UrlFetchApp.getRequest(url,options); // (OPTIONAL) generate the request so you
console.info("Request payload: " + request.payload); // can examine it (useful for debugging)
var response = UrlFetchApp.fetch(url,options);
console.info("Response body: " + response.getContentText());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10982 次 |
| 最近记录: |