Подтвердить что ты не робот

Загрузите файл объемом более 2,15 ГБ в R

У меня есть ручной процесс, когда я загружаю файл 5-6 ГБ на веб-сервер через curl:

curl -X POST --data-binary @myfile.csv http://myserver::port/path/to/api

Этот процесс работает отлично, но я бы хотел автоматизировать его с помощью R. Проблема в том, что я либо не знаю, что я делаю, либо библиотеки R для завитка не знают, как обрабатывать файлы больше чем ~ 2 ГБ:

library(RCurl)
postForm(
     "http://myserver::port/path/to/api",
      file = fileUpload(
        filename = path.expand("myfile.csv"),
        contentType = "text/csv"
      ),.encoding="utf-8")

Yeilds Error: Internal Server Error

httr не работает:

library(httr)
POST(
      url = "http://myserver:port/path/to/api",
      body = upload_file(
        path =  path.expand("myfile.csv"),
        type = 'text/csv'),
      verbose()
    )

Что дает:

Response [http://myserver:port/path/to/api]
  Date: 2015-06-30 11:11
  Status: 400
  Content-Type: <unknown>
<EMPTY BODY>

httr немного информативнее с опцией verbose(), говоря мне:

-> POST http://myserver:port/path/to/api
-> User-Agent: libcurl/7.35.0 r-curl/0.9 httr/1.0.0
-> Host: http://myserver::port
-> Accept-Encoding: gzip, deflate
-> Accept: application/json, text/xml, application/xml, */*
-> Content-Type: text/csv
-> Content-Length: -2147483648
-> Expect: 100-continue
-> 
<- HTTP/1.1 400 Bad Request
<- Server: Apache-Coyote/1.1
<- Transfer-Encoding: chunked
<- Date: Tue, 30 Jun 2015 11:11:11 GMT
<- Connection: close
<- 

Content-Length: -2147483648 выглядит подозрительно, как 32-битное целочисленное переполнение, поэтому я считаю, что это ошибка в httr. Я подозреваю, что RCurl испытывает аналогичный сбой.

Мне бы очень понравилась минимальная оболочка вокруг curl -X POST --data-binary, но, если это не так, то какие у меня параметры для загрузки довольно больших файлов из R?

4b9b3361

Ответ 1

Эта ошибка исправлена ​​в dev-версии httr/curl:

devtools::install_github("jeroenooms/curl")
devtools::install_github("hadley/httr")

Это ошибка в httr и curl для R. Ошибка была исправлена ​​на GitHub с 2 июля 2015 года, и изменение будет развернуто к CRAN в ближайшее время.

Возможно также, что я неправильно вызывал RCurl в приведенной выше команде, но я никогда не мог определить правильный вызов.