D2L Valence - 将文件上传到群组储物柜
D2L Valence - Uploading file to a group locker
我的目标是为 class 中的每个人创建一个群组储物柜,并将文件上传到该储物柜。所以我先打电话给
POST /d2l/api/lp/(version)/(orgUnitId)/groupcategories/
为了创建一个类别。这也会为每个用户创建一个组并自动注册他们。然后我通过调用
为类别中的每个组创建一个储物柜
POST /d2l/api/lp/(version)/(orgUnitId)/groupcategories/(groupCategoryId)/locker
这非常有效,此时每个学生都有自己的小组,并为小组分配了一个储物柜。然后是文件上传部分。
使用
POST /d2l/api/le/(version)/(orgUnitId)/locker/group/(groupId)/(path)
call 我正在尝试发送文件,但我得到的只是一个 404 错误,没有提供任何响应。根据 D2L 的网站,404 表示该组不存在,这是不正确的,因为 groupId 是从第一次调用中收到的,并且适用于第二次调用。对于 header 我使用数组:
$h = array(
'Content-Type: multipart/form-data',
);
内容是:
$contents = array("FileDescription" => json_encode(
array("Description" => "YY",
"IsPublic" => true
)),
"FILEFILE");
POST是使用cURL(php)执行的,代码主要是D2L网站上提供的代码(doValenceRequest函数的修改版)。我尝试了多种不同的 headers,以及内容数组的不同格式。无论我做什么,都会返回 404 错误。我什至尝试只创建一个简单的文件夹而不是上传文件,但遇到了同样的问题。我做错了什么吗?
Locker 文件上传使用 simple upload (not resumable) pattern,但是,因为您发送 JSON 文档 以及 文件数据,您必须使用 RFC2388 multipart/mixed 模式,带有 POST。请参阅有关 multi-part 混合模式的简单上传部分,了解这些 HTTP 数据包的外观。
特别注意:HTTP content-type 是 multipart/mixed
而 不是 multipart/form
。另外,请确定您实际上发送的是 POST,而不是 PUT。一些 HTTP 库对 multipart\mixed
有效载荷的使用非常挑剔,您可能会发现自己必须 hand-cook 整个 HTTP 请求 body 才能正确格式化部分,并调整 headers 一点,在你发送请求之前。
另请注意,您应该始终发送 JSON 文档部分 首先 在部分列表中,就像文档中的模式示例一样。
我的目标是为 class 中的每个人创建一个群组储物柜,并将文件上传到该储物柜。所以我先打电话给
POST /d2l/api/lp/(version)/(orgUnitId)/groupcategories/
为了创建一个类别。这也会为每个用户创建一个组并自动注册他们。然后我通过调用
为类别中的每个组创建一个储物柜POST /d2l/api/lp/(version)/(orgUnitId)/groupcategories/(groupCategoryId)/locker
这非常有效,此时每个学生都有自己的小组,并为小组分配了一个储物柜。然后是文件上传部分。 使用
POST /d2l/api/le/(version)/(orgUnitId)/locker/group/(groupId)/(path)
call 我正在尝试发送文件,但我得到的只是一个 404 错误,没有提供任何响应。根据 D2L 的网站,404 表示该组不存在,这是不正确的,因为 groupId 是从第一次调用中收到的,并且适用于第二次调用。对于 header 我使用数组:
$h = array(
'Content-Type: multipart/form-data',
);
内容是:
$contents = array("FileDescription" => json_encode(
array("Description" => "YY",
"IsPublic" => true
)),
"FILEFILE");
POST是使用cURL(php)执行的,代码主要是D2L网站上提供的代码(doValenceRequest函数的修改版)。我尝试了多种不同的 headers,以及内容数组的不同格式。无论我做什么,都会返回 404 错误。我什至尝试只创建一个简单的文件夹而不是上传文件,但遇到了同样的问题。我做错了什么吗?
Locker 文件上传使用 simple upload (not resumable) pattern,但是,因为您发送 JSON 文档 以及 文件数据,您必须使用 RFC2388 multipart/mixed 模式,带有 POST。请参阅有关 multi-part 混合模式的简单上传部分,了解这些 HTTP 数据包的外观。
特别注意:HTTP content-type 是 multipart/mixed
而 不是 multipart/form
。另外,请确定您实际上发送的是 POST,而不是 PUT。一些 HTTP 库对 multipart\mixed
有效载荷的使用非常挑剔,您可能会发现自己必须 hand-cook 整个 HTTP 请求 body 才能正确格式化部分,并调整 headers 一点,在你发送请求之前。
另请注意,您应该始终发送 JSON 文档部分 首先 在部分列表中,就像文档中的模式示例一样。