Загрузить файл в Nginx с помощью cURL

#nginx #curl

#nginx #curl

Вопрос:

Все,

Я пытаюсь загрузить локальный файл на мой удаленный сервер Nginx через cURL. Я создал Nginx из исходного кода с помощью модуля загрузки и модуля DAV. В нижней части страницы Nginx есть пример формы для загрузки файла. Я не уверен, как бы я реализовал форму, и (несколько) поисковых запросов Google вернули мало полезной информации о загрузке непосредственно в Nginx через cURL.

Текущий технический стек:

  • Nginx
  • Зеленый единорог
  • Flask

Из всех различных способов, которые я пробовал, следующий кажется наиболее подходящим для этой задачи.

 curl -X POST -F "image=@example.gif" http://54.226.64.199/upload
  

Однако ответ не вызывает восторга.

Я также пробовал —uploade-file, ответ — 405. Из того, что я прочитал, upload принимает только команду POST, а не PUT, поэтому я получаю 405.

Мне не нужно полное решение (было бы здорово!), Только указывающее в правильном направлении.

Любая помощь приветствуется. Спасибо

РЕДАКТИРОВАТЬ: извините, хотел включить часть моего .conf

         location /upload {
        upload_store /tmp;
        #upload_pass @none;
        upload_store_access all:rw;
        upload_cleanup 400 404 499 500-505;

    }
  

Комментарии:

1. .. также распечатайте журналы ошибок nginx

2. Эй, короче говоря, я делал это неправильно. Вместо того, чтобы пытаться загрузить через Nginx, я загрузил через Flask. flask.pocoo.org/docs/1.0/patterns/fileuploads

3. @Nashlufy: Не могли бы вы опубликовать свое открытие в качестве ответа? Я борюсь с той же проблемой. Не удается найти команду cURL для отправки в NGINX.

Ответ №1:

Вы можете сделать это, указав filename в URL, без использования какого-либо внешнего модуля :

 location ~ "/upload/([0-9a-zA-Z-.]*)$" {
    alias     /storage/www/upload/$1;
    client_body_temp_path  /tmp/upload_tmp;
    dav_methods  PUT DELETE MKCOL COPY MOVE;
    create_full_put_path   on;
    dav_access             group:rw  all:r;
}
  

И использовать: curl -T example.gif http://54.226.64.199/upload/example.gif