#r #image #curl #post
#r #изображение #curl #Публикация
Вопрос:
Я пытаюсь загрузить изображение на веб-сайт. Ниже приведена успешная функция curl:
curl --location --request POST 'http://xxxxx?laboratoryResultVisibleId=LR-116807amp;assayAttribute=Traceamp;onBehalfOf=minnie'
--header 'Authorization: Basic U1JWR0JMLUdEQklPTDpQZjgyNTE5Mw=='
--form 'imageFile=@/C:/Users/minnie/Downloads/plot.png'
Я пишу свой R-код следующим образом:
username <- "minnie"
url <- "http://xxxxx"
auth <- authenticate(user='abc', password='xyz', type="basic")
header <- list(username)
names(header) <- "X-On-Behalf-Of"
filepath <- "C:/Users/minnie/Downloads/plot.png"
post_zip <- httr::POST(
url = url,
auth,
body = list(
laboratoryResultVisibleId = 'LR-116807',
assayAttribute = 'Trace',
file = httr::upload_file(filepath),
userid = username
),
httr::add_headers("Content-Type"="multipart/form-data")
)
post_zip
content(post_zip, "text")
и я получил следующий отзыв:
Response [http://xxxxx]
Date: 2020-11-18 22:30
Status: 200
Content-Type: application/json;charset=UTF-8
Size: 43 B
> content(post_zip, "text")
[1] "{"success":false,"message":"No File found"}"
Кажется, что файл не найден. Есть какие-нибудь подсказки? Большое спасибо за вашу помощь 🙂
Комментарии:
1. Вы убедились, что это true file.exists() с полным путем к файлу в скобках
2. > file.exists(«plot.png») [1] ВЕРНО
3. Подождите, почему бы не пойти простым путем и просто выполнить успешную команду curl? Если в файле Rmarkdown просто сделать фрагмент кода фрагментом bash?
4. Я пытаюсь подключить R shiny к веб-сайту, и, следовательно, это должен быть R-код. Это своего рода конвейер автоматизации.
Ответ №1:
Я чувствую, что это как-то связано с http и https, можете ли вы попробовать перейти на https?
Комментарии:
1. Это должно быть «http». Я подтвердил.
Ответ №2:
Проблема заключается в пути к файлу. Мы должны использовать файл.функция path () в R сообщает серверу, что это путь к файлу, а не символьная строка.
filepath <- file.path(getwd(), "plot.png")
post_zip <- httr::POST(
url = url,
auth,
body = list(
laboratoryResultVisibleId = 'LR-116807',
assayAttribute = 'Trace',
imageFile = httr::upload_file(filepath),
userid = username
),
httr::add_headers("Content-Type"="multipart/form-data")
)
post_zip
content(post_zip, "text")