2016-01-01 3 views
1

Я пытаюсь настроить nginx для управления загрузкой файлов для приложения node.js. я следовал этот учебник: https://coderwall.com/p/swgfvw/nginx-direct-file-upload-without-passing-them-through-backendЗагрузка файла с помощью nginx и node.js

Я сделал это со следующей конфигурацией:

server { 
    listen 80; 

    server_name example.com; 

    location/{ 
     proxy_pass http://127.0.0.1:3000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 

    location /upload { 
     auth_request    /upload/authenticate; 
     limit_except POST   { deny all; } 

     client_body_temp_path  /tmp/; 
     client_body_in_file_only on; 
     client_body_buffer_size 128K; 
     client_max_body_size  1000M; 

     proxy_pass_request_headers on; 
     proxy_set_header   X-FILE $request_body_file; 
     proxy_set_body    off; 
     proxy_redirect    off; 
     proxy_pass     http://localhost:3000/uploads; 
    } 

    location /upload/authenticate { 
     internal; 
     proxy_set_body off; 
     proxy_pass http://localhost:3000/auth/isAuthenticated; 
    } 
} 

И я сделал тест с Почтальон следующим образом:

Upload post request

Запросе сообщению :

POST/upload HTTP/1.1 Хост: localho й Cache-Control: нет кэша

---- WebKitFormBoundaryE19zNvXGzXaLvS5C Content-Disposition: форм-данных; Name = "изображение"; имя файла = "pic.jpg" Content-Type: изображение/JPEG

---- WebKitFormBoundaryE19zNvXGzXaLvS5C

Он отлично работает и Nginx загружает изображение в каталоге/TMP. Проблема заключается в том, что файл переименовывается как «0000000001», и когда я переименую его вручную как «pic.jpg» и попытаюсь открыть его, подсказки зрителя «Ошибка интерпретации файла изображения JPEG (Не файл JPEG: начинается с 0x2d 0x2d) ».

И когда я запускаю команду файла (файл pic.jpg), она возвращает: «pic.jpg: data».

+0

У вас есть попытка сохранить его в другой папке, а не в temp, а затем попробовать переименовать его? –

+0

Спасибо за ответ, да, я сделал, и у меня такая же проблема. – sromdhane

ответ

2

Не могли бы вы проверить версию Postman? В моей среде Postman (v3.2.8) имеет «двоичный» переключатель по запросу.

Согласно сообщению в блоге, метод «clientbodyinfileonly» несовместим с данными из нескольких частей и поддерживает только загрузку двоичных данных.

Таким образом, пожалуйста, повторите запрос с двоичным режимом (почтальон или другой метод, например XHR2).

+0

Большое спасибо, как вы уже сказали, ранее я использовал многочастную часть, которая не поддерживается модулем clientbodyinfileonly. Я обновил почтальон, и я использовал двоичный тип, теперь, после того как я переименую файл, я могу его открыть. – sromdhane

Смежные вопросы