gpt4 book ai didi

rest - 使用 DSpace REST API 将新比特流添加到 DSpace 项目

转载 作者:行者123 更新时间:2023-12-02 03:40:10 26 4
gpt4 key购买 nike

我正在尝试使用休息调用将新的比特流文件添加到 DSpace(版本 5.2)项目。我正在通过 java 程序进行其余的调用。我能够通过我的程序成功登录 REST API。这是我的代码段:

HttpPost post = new HttpPost(dspace_rest_url+"login");
StringEntity input = new StringEntity("{\"email\":\""+dspace_email+"\",\"password\":\""+dspace_password+"\"}");
input.setContentType("application/json");
post.setEntity(input);
HttpResponse response = client.execute(post);

但是,我对如何使用 REST 调用发布比特流感到困惑。 DSpace REST Documentation没有明确指定如何将比特流发布到 DSpace。我有一个图像文件,我想将其添加到一个项目(我知道项目 ID)。根据文档:

POST /items/{item id}/bitstreams - Add bitstream to item. You must post a Bitstream

如何以比特流的形式发布我的图像文件?例如,为了登录 REST API,需要 JSON 数组中的电子邮件和密码。 API 期望比特流采用哪种格式。

希望有人能帮忙。

这是我尝试过的:

HttpClient client = new DefaultHttpClient();

HttpPost post = new HttpPost(dspace_rest_url+"items/"+itemID+"/bitstreams");

post.addHeader("rest-dspace-token", token);
File postFile = new File(thumbnailPath);

MultipartEntityBuilder builder = MultipartEntityBuilder.create();

builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
FileBody cbFile = new FileBody(postFile, "image/jpeg");
builder.addPart("userfile", cbFile);

HttpEntity entity = builder.build();
post.setEntity(entity);
System.out.println("executing request " + post.getRequestLine());
HttpResponse response = client.execute(post);

DSpace REST 返回的响应:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bitstream>
<expand>parent</expand>
<expand>policies</expand>
<expand>all</expand>
<id>461945</id>
<type>bitstream</type>
<bundleName>ORIGINAL</bundleName>
<checkSum checkSumAlgorithm="MD5">d281b5cbf5d2001e266ed3252a50fb2d</checkSum>
<format>Unknown</format>
<mimeType>application/octet-stream</mimeType>
<retrieveLink>/bitstreams/461945/retrieve</retrieveLink>
<sequenceId>-1</sequenceId>
<sizeBytes>5677</sizeBytes>
</bitstream>

最佳答案

经过多次尝试,我成功使用 Dspace Rest API 发布比特流文件:

1- URL 应包含名称和可选描述“不带空格”
例如:http://domain-name.com:8080/rest/items/120/bitstreams?name=my_image.jpg&description=my_description

2- header 应包含:
- “rest-dspace-token”以及登录 token 的值。
-“Content-Type”可以是“multipart/form-data”或“text/plain”

3-发布的内容应该是文件的二进制文件,没有任何名称或 key ,如纯文本。

使用 php curl 的示例:

$file_name_with_full_path = realpath('./my_image.jpg');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://domain-name.com:8080/rest/items/120/bitstreams?name=my_image.jpg&description=my_description');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain', 'Accept: application/json', 'rest-dspace-token: ' . $dspaceToken));
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($file_name_with_full_path));
$result = curl_exec($ch);
curl_close($ch);
echo $result;

关于rest - 使用 DSpace REST API 将新比特流添加到 DSpace 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33055773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com