Zgodnie z RFC, w nagłówku treści wieloczęściowy/formularz-dane nagłówek nazwa pliku odbiera jako parametr łańcuch cytowany przez HTTP - ciąg znaków między znakami, gdzie znak "\" może uciec jakakolwiek inna postać ASCII.Parsowanie nazwy pliku nagłówka zawartości w wieloczęści/z danych
Problem polega na tym, że przeglądarki internetowe tego nie robią.
IE6 wysyła:
Content-Disposition: form-data; name="file"; filename="z:\tmp\test.txt"
Zamiast oczekiwać
Content-Disposition: form-data; name="file"; filename="z:\\tmp\\test.txt"
który powinien być analizowany jako z:tmptest.txt
według zasad zamiast z:\tmp\test.txt
.
Firefox, Konqueror i Chrome nie uciec "znaki na przykład:
Content-Disposition: form-data; name="file"; filename=""test".txt"
Zamiast oczekiwać
Content-Disposition: form-data; name="file"; filename="\"test\".txt"
Więc ... jak proponujesz do radzenia sobie z tym problemem
?Czy ktoś ma pomysł?
"Czy jest jakiś powód, aby w ogóle przeanalizować tę nazwę pliku?" - tak, chcę znać nazwę pliku;). "Przynajmniej jedną rzeczą, która jest spójna, jest to, że nazwa pliku nagłówka kończy się podwójnym cudzysłowem" Pola nazwy pliku i nazwy nie powinny być w tej określonej kolejności, więc nie należy zakładać, że nazwa pliku kończy się na końcu cudzysłów. – Artyom
Want! = Need. ;) Ok, więc masz przynajmniej gwarancję, że zakończy się na '" 'lub z' "; '- z tym brakiem spójności trzeba poczynić pewne ustępstwa, na przykład polegając na tym, że użytkownicy nie umieszczają" ";" w środku swoich nazw plików :) Alternatywnie, czy korzystasz z platformy internetowej, która obsługuje Najlepszym rozwiązaniem jest przetestowanie tego atrybutu dla ciebie? –