Pytanie Przesyłanie HTTP za pomocą wideł zasobów


Buduję usługę przesyłania opartą na PHP dla niektórych naszych klientów. Używam SWFUpload, dzięki czemu mogę wyświetlać postęp pliku podczas przesyłania. Mam go prawie zbudowane, ale pojawia się ostatni problem, zanim będziemy mogli udostępnić go publicznie.

Wielu (prawie wszyscy) naszych klientów jest opartych na komputerach Mac i ładuje zestawy plików zawierające pliki InDesign, czcionki, pliki Illustratora itp. Większość razy pliki obrazów są w porządku, ale czasami (i zawsze z czcionkami typu 1) plik zostanie uszkodzony, ponieważ traci widżet zasobów.

Rozumiem, dlaczego tak się dzieje (przejście z systemu wieloramiennego na system z pojedynczym rozwidleniem), ale nie mogę znaleźć żadnego eleganckiego rozwiązania. W moich badaniach najlepszą odpowiedzią, jaką do tej pory znalazłem, jest "zmusić użytkownika do kompresji". Wiem, że to działa, ale jest nierozsądne - zdaniem naszego klienta - wymagać od nas kompresowania każdego zestawu plików, które zamierzają wysłać.

Czy istnieją lepsze rozwiązania, które pozwolą utrzymać przy życiu widły zasobów? Oczywiście wolałbym rozwiązanie, które jest proste javascript / php, ale chciałbym zadowalać się czymś opartym na flashu lub (najkorzystniej) opartym na java.

Moje jedyne wymagania dla nowego rozwiązania to:

  • Zobacz postęp przesyłania
  • Użytkownik nie musi ręcznie kompresować plików

Oto kilka informacji o moim systemie

  • Ubuntu 10.10 Serwer z zainstalowaną standardową instalacją LAMPY
  • PHP5
  • SWFUpload (wtv w najnowszej wersji)

12
2017-07-26 13:13


pochodzenie


W czasach starożytnych Apple posiadało formaty plików o nazwach MacBinary i BinHex oraz AppleSingle ... zostały one specjalnie zakodowane, aby zawierały wszystkie widełki w jednym pliku ... nie wiem jednak, czy istnieje opcja umożliwiająca włączenie w obecnych przeglądarkach ... bieżących klienci poczty wciąż mają wsparcie dla tego typu rzeczy - Yahia
sprawdź, co się dzieje z normalnym przesyłaniem (bez wysyłania itp.) - być może przeglądarka wysyła widełki zasobów jako oddzielną część MIME w POST ... - Yahia


Odpowiedzi:


Przesyła pliki uchwytów. Jeśli przeglądarka i podstawowy system operacyjny nie są w stanie radzić sobie z rozwidleniami w tej procedurze (mapuj dowolny plik na model pliku do przesłania), to jesteś związany z tym, co dostajesz przez architekturę systemu.

Widget zasobów: Widget zasobów jest konstrukcją systemu operacyjnego Mac OS używanego do przechowywania danych strukturalnych w pliku, wraz z niestrukturalnymi danymi przechowywanymi w widełkach danych. Widget zasobów przechowuje informacje w określonej formie, takie jak ikony, kształty okien, definicje menu i ich zawartości oraz kod aplikacji (kod maszynowy).

Jeśli to bloker, możesz wybrać niewłaściwe pole do działania. Po prostu mówisz, że jeśli natkniesz się na systematyczne granice, niewiele możesz zrobić. Nawet jeśli pracujesz dla grafików i użytkowników mac.

The Funkcja swfupload będzie wymagać funkcji do obsługi wideł. Za to, flash wymaga funkcji do obsługi wideł. Za to przeglądarka w końcu potrzebuje funkcji do obsługi wideł. I tak dalej.

Obok tego łańcucha pozostaje jeszcze jedno pytanie: jak radzić sobie z widłami? Jako że przesyłka mapuje tylko jeden plik na fragment danych binarnych, jak również odwzorować widelec? Dołącz to? Dodać dodatkowy plik?

Tak więc na poziomie technicznym nie wydaje się to łatwe do rozwiązania. Wszystkie komponenty i systemy w łańcuchu wejściowym plików muszą obsługiwać funkcję, która w ogóle nie jest obsługiwana.

Ponieważ nie możesz zaoferować czegoś użytkownikowi, który nie istnieje, jedyną rzeczą, którą możesz zrobić, to uczynić swoją aplikację bardziej użyteczną lub przyjazną dla użytkownika. Na przykład. dostarczając odpowiednie notatki we właściwym czasie (np. kiedy użytkownik wybiera plik typu 1 do przesłania, aby przypomnieć mu o wybrnięciu również widelca). Komunikacja z użytkownikiem może pomóc, ale pamiętaj, że użytkownik musi się porozumiewać w języku, który rozumie.

Jeśli więc wiesz, że niektóre typy plików mają widelce, rozwiąż problem u osoby, która może rozwiązać problem: Użytkownik. Nie możesz.


6
2017-07-28 11:39





Nie musisz używać swfupload do monitorowania postępu.

Oto kilka plików, które to demonstrują: https://github.com/senica/Booger/tree/master/assets/js/jquery-upload

Nie jest to dokumentowane bardzo dobrze, ale w zasadzie wykorzystuje funkcję webkitSlice do przesyłania plików w javascript. Możesz użyć funkcji oddzwaniania, aby wyświetlić postęp plików.

To byłoby rozwiązanie javascript / php.


0
2017-08-04 22:23