Возможно ли в Javascript сравнивать File Objects?

Значит, пробую в веб-проекте прикрутить jQuery File Upload, все делаю через API.

Дошел до момента, когда в javascript-переменную (массив) добавляю File Object, но перед этим необходимо проверить, нет ли такого объекта в массиве.

К сожалению метод JSON.stringify для File Object и операция сравнения (==) не работают.
  • Вопрос задан
  • 3936 просмотров
Пригласить эксперта
Ответы на вопрос 6
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
А зачем вам это нужно? Что бы пользователь не мог загрузить один и тот же файл дважды? А почему его нужно так ограничивать?

В любом случае, если у двух файлов одинаковое название и одинаковый размер файлов, с очень большой долей вероятности это один и тот же файл. Либо копия файла находящаяся в другой директории.

По хорошему это лишняя проверка, если только для этого нету веских оснований.
Ответ написан
Комментировать
itspers
@itspers
А indexOf пробовали? У них там еще на крайний случай есть name и size
Ответ написан
Комментировать
savio
@savio Автор вопроса
IndexOf пробовал, не работает. Временное решение: действительно, проверять по имени файла. В идеале, файлы могут иметь одинаковое название и размер (при этом быть разными), но лежать в разных папках, а сервер после приема этих файлов сам должен решать, что делать (переименовывать например). Мне бы хватило полного пути к файлу, но такого свойства в объекте я не нашел. Сейчас нашел и вкуриваю Чтение файлов в JavaScript с помощью API файлов
Ответ написан
savio
@savio Автор вопроса
У вас в каталоге 10 файлов. Вы нажимаете на ADD и добавляете 5 из них. Потом Вы передумали, и решили что нужно отправить все 10 файлов. Соответственно Вы нажимаете второй раз на ADD и выделяете все 10 файлов. В итоге мы имеем 15 файлов для отправки (5 шт при первой выборки, и 10 штук при второй выборке, причем 5 из которых у нас уже есть). Что бы этого не было, в момент change хочу организовать выше описанную проверку
Ответ написан
affka
@affka
http://affka.ru
При желании, пользователь всё равно может обойти ваше ограничение. Например, сделав копию файла и назвав её иначе. Если действительно нужно защититься от дубляжей, то вам поможет только сравнение размера и md5 хешей файлов на бекенде.
Ответ написан
maxaon
@maxaon
Возможно сравнить, используя FileReader, прочитав файл как массив, с помощью readAsArrayBuffer
Туториал от html5rocks (правда там читают как строку)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы