如何使用curl

时间:2019-03-28 23:06:44

标签: rest curl dspace

我正在尝试使用curl使用DSpace 6的REST API上传文件:

curl -k -4 \
    -H "Content-Type: multipart/form-data" \
    --cookie "JSESSIONID=E7B87CCFA35FB83670F379072505580E" \
    -H "accept: application/json" \
    -X POST "http://localhost:5553/rest/items/4f7b0dba-428d-458a-854d-141350b9b678/bitstreams?name=Picture.jpg" \
    -F 'upload=@picture.jpg'

发送正确完成,这是响应:

{"uuid":"737b78b7-8369-4b47-a36a-69ddd7f24bda","name":"Picture.jpg","handle":null,"type":"bitstream","expand":["parent","policies","all"],"bundleName":"ORIGINAL","description":null,"format":"JPEG","mimeType":"image/jpeg","sizeBytes":570897,"parentObject":null,"retrieveLink":"/rest/bitstreams/737b78b7-8369-4b47-a36a-69ddd7f24bda/retrieve","checkSum":{"value":"0dec466b8d8546a60f39882f7735f084","checkSumAlgorithm":"MD5"},"sequenceId":-1,"policies":null,"link":"/rest/bitstreams/737b78b7-8369-4b47-a36a-69ddd7f24bda"}

但是当我尝试访问上载的(Inside DSpace)文件时,它说这是无效的。 尝试上传纯文本文件,并将其添加到文件的顶部和结尾:

-------------------------- 9406e94bc5f35740 内容处置:表单数据; name =“ upload”; filename =“ data.txt” 内容类型:文本/纯文本

[文件内容在这里]

-------------------------- 9406e94bc5f35740-

我尝试在nodejs中执行请求,但遇到相同的错误。 一些帮助 ?预先感谢。

2 个答案:

答案 0 :(得分:1)

我在curl命令中使用-T(上传文件)参数解决了该问题:

menubar

在nodejs中使用请求承诺:

curl -k -4 -v \
    -H "Content-Type: multipart/form-data" \
    --cookie "JSESSIONID=E7B87CCFA35FB83670F379072505580E" \
    -H "accept: application/json" \
    -X POST "http://localhost:5553/rest/items/4f7b0dba-428d-458a-854d-141350b9b678/bitstreams?name=picture.jpg" \
    -T 'picture.jpg'

答案 1 :(得分:0)

对于python,我的解决方案不是用户 files= ,而是 data= 以避免请求多部分。

import io
params = {'name': 'file.csv'}
data = io.BytesIO(open('file.csv', 'rb').read())
res = session.post(url, data=data, params=params, headers={})