W File
JavaScript jest obiekt. Chcę utworzyć instancję do celów testowych.
Próbowałem new File()
, ale pojawia się błąd „Niedozwolony konstruktor”.
Czy można stworzyć File
obiekt?
Odniesienie do obiektu pliku: https://developer.mozilla.org/en/DOM/File
javascript
file-upload
upload
julesbou
źródło
źródło
Illegal constructor
na Chrome 37 / Ubuntu, więc nie, nie działafile = new Blob([blobdata], {type: filetype, lastModified: filelastModified}); file.name = filename
Teraz możesz!
źródło
new File([], '')
Illegal constructor
na Chrome 37 / UbuntuZamiast tego użyj obiektu Blob
Alternatywnie istnieje Blob , którego można użyć zamiast File, ponieważ jest to interfejs pliku, zgodnie ze specyfikacją W3C :
Utwórz obiekt Blob
Użycie BlobBuilder w ten sposób w istniejącej metodzie JavaScript, która pobiera plik do przesłania za pośrednictwem
XMLHttpRequest
i dostarczenie do niego obiektu Blob, działa dobrze w następujący sposób:Rozszerzony przykład
Pozostała część próbki znajduje się na jsFiddle w bardziej kompletny sposób, ale nie zostanie pomyślnie przesłana, ponieważ nie mogę ujawnić logiki przesyłania na dłuższą metę.
źródło
DataTransferItemList.add
File
nie wymagaBlob
. A więc do pierwotnego pytania: jak utworzyć wystąpienie pliku ?Teraz jest to możliwe i obsługiwane przez wszystkie główne przeglądarki: https://developer.mozilla.org/en-US/docs/Web/API/File/File
źródło
Pomysł ... Aby utworzyć obiekt File (api) w javaScript dla obrazów już obecnych w DOM:
Nie rób tego! ... (ale i tak to zrobiłem)
-> konsola daje wynik podobny do pliku obiektu:
Ale rozmiar obiektu jest zły ...
Dlaczego muszę to zrobić?
Na przykład w celu retransmisji już załadowanego formularza graficznego podczas aktualizacji produktu, wraz z dodatkowymi zdjęciami dodanymi podczas aktualizacji
źródło
Ponieważ jest to skrypt javascript i dynamiczny, możesz zdefiniować własną klasę pasującą do interfejsu File i użyć jej zamiast tego.
Musiałem to zrobić z dropzone.js, ponieważ chciałem zasymulować przesyłanie pliku i działa to na obiektach File.
źródło