2014-04-24 12 views
6

Próbuję skonfigurować Nginx do obsługi przesyłania plików i przekazać informacje o pliku na serwer backend po zakończeniu. Natknąłem się na wpis na stronie https://coderwall.com/p/swgfvw, który pokazuje, jak to zrobić i widzę plik przesyłany do katalogu/tmp. Chciałbym jednak również przekazać nazwę pliku i typ (Content-Disposition i Content-Type) do serwera zaplecza.Przesyłanie plików Nginx do serwera zaplecza

Próbowałem uchwycenie tego, co wpłynęło do portu serwera HTTP i zobaczyć poniżej,

POST /upload HTTP/1.1 
User-Agent: curl/7.32.0 
Host: MyHostName 
Accept: */* 
Content-Length: 4431 
Expect: 100-continue 
Content-Type: multipart/form-data; boundary=------------------------6060af4f937c14c9 

--------------------------6060af4f937c14c9 
Content-Disposition: form-data; name="filedata"; filename="sessions.txt" 
Content-Type: text/plain 

następuje danych.

Moje nginx blok lokalizacja do przesłania jest

 location /upload { 
       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   100M; 

       proxy_redirect     off; 
       proxy_set_header    X-FILE $request_body_file; 
       proxy_set_header    X-Forwared-For $proxy_add_x_forwarded_for; 
       proxy_set_header    Host $http_host; 
       proxy_set_header    X-NginX-Proxy true; 
       proxy_set_header    Connection ""; 
       proxy_pass_request_headers  on; 
       proxy_set_body     off; 
       proxy_http_version    1.1; 
       proxy_pass      http://my_backend; 
     } 

Dzięki temu jestem w stanie przekazać i otrzymać następujące w moim backend,

'content-type': 'multipart/form-data; boundary=------------------------6060af4f937c14c9' 
'x-file': '/tmp/0000000001' 

ale naprawdę chciałbym wiedzieć, jak ja mogę uzyskać Każda pomoc z tym jest bardzo doceniana.

P.S: mam nadzieję, że jest w porządku dla tego pytania tutaj? (Próbowałem superuser ale nie wydaje się mieć dużo aktywności)

+0

Czy kiedykolwiek miałeś szczęście? Czy nagłówki Content-Disposition znajdują się u góry oczekiwanego zachowania pliku? A jeśli tak, czy później je rozebrasz, aby wyświetlić plik (obrazek) lub instancję? – Mike

+0

Właściwie nie, zdecydowałem się nie używać tego podejścia na razie, ale myślę, że parsowanie pliku na wyższym serwerze byłoby jednym ze sposobów, aby to zadziałało (prawdopodobnie spróbuję czegoś takiego, kiedy dostanę taką szansę). –

+0

Zastanawiam się również, czy ktoś miał szczęście w tym ... – stackular

Odpowiedz

0

jeśli nagłówek jest ignorowany, spróbuj

proxy_pass_header Content-Disposition; 

lub bezpośrednio przekazać

proxy_set_header  Content-Disposition $http_content_disposition; 
+0

Próbowałem ich obu, ale nadal nie otrzymywałem Dispostionu zawartości na serwerze zaplecza :( –

0

podkreślenia w nagłówkach niestandardowych są cicho zignorowano w nginx, opcja, która może pomóc w włączeniu underscores_in_headers;

Powiązane problemy