Обработка загрузки большого файла с помощью «io.Pipe» на стороне сервера - PullRequest
0 голосов
/ 25 мая 2018

В рамках своего учебного процесса я недавно начал новую задачу по созданию веб-приложения для фотомозаики с golang.Поскольку я планирую разместить его на App Engine, я разделил его на 2 службы: один для обработки загрузки изображений и другой для обработки изображений.Здесь я хочу начать обработку изображения, как только будут получены первые байты.Во время моего исследования я наткнулся на эту суть cryptix / client.go .Мне нужно использовать этот метод, чтобы прочитать запрос в io.Pipe и затем направить его на лету в мой сервис обработки изображений, и ни одно из моих поисков не помогло: все, что нужно увидеть, - это клиент GO, отправляющий файлы, пока я хочу Goсервер получает файлы.

ПРИМЕЧАНИЕ :

  • Обе службы обмениваются данными через HTTP.
  • Я использую шаблон REST (без HTMLформа: тестирование с помощью POSTMAN).
  • Конкретные примеры приветствуются.
  • Пожалуйста, не хмуриться, это мой первый вопрос о переполнении стека.

1 Ответ

0 голосов
/ 17 июня 2018

Несколько неохотно отвечаю, потому что я не уверен, в чем именно заключается проблема или что вы пытались.

Но это всего лишь потоковое чтение http.

http.Requestна самом деле содержит тело запроса в io.ReadCloser.Это означает, что стандартные реализации io.Reader могут выполнять потоковую передачу.

Вам нужно создать функцию, которая обрабатывает ваши данные.

func process(r io.Reader) {
    // do something
}

, затем вы можете прочитать ее из обработчика http

func(w http.ResponseWriter, r *http.Request) {
    process(r.Body)
}

Не зная вашего точного вопроса или в чем вам нужна помощь, я не могу уточнить дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...