image-uploader icon indicating copy to clipboard operation
image-uploader copied to clipboard

Ограничение поддерживаемых файлов хостингом а так же Squirrel::GetFileMimeType

Open arhangelsoft opened this issue 10 years ago • 6 comments

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

т.е. некий скрипт/xml атрибут задает список поддерживаемых файлов по расширению, т.е. так "png;jpg" для одного хостинга и для другого "gif;png;jpg;xps"

в squirrel запилить какую-нибудь GetSupportedExtenstionlist() { local a = ["png","bmp","etc..."]; }

эту проверку можно и в скрипте написать, но проблема в том, что IU не сможет сделать 2 крутые вещи:

  1. Для выбранного списка файла предложить те сервера, которые их поддерживают.
  2. При лучайном выборе хостинга, nut не может сказать "передай другому, я не умею это", и цепочка обломится с ошибкой.
  3. Хостинг не поддерживает, юзер это не знает, грузит картинку и ложит непонятные предметы "Почему не работает?!111"

Собственно в servers.xml завести атрибут exts="" для type="image", в котором перечисляются через запятую, расширения, которые поддерживает конкретный хостинг картинок.

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

Аргументирование: Image Uploader ну вот совсем никак не помог мне загрузить gif на хостинг. Вся прелесть в том что, все фото-хосты поддерживают gif вот таким образом: вырезают первый фрейм и считают, что успешно загрузили картинку.

arhangelsoft avatar Mar 18 '15 19:03 arhangelsoft

Идея загрузки на случайный сервер мне не нравится. Такая функция не поддерживается, хотя может она и работает (когда-то работала). Можно просто перед загрузкой проверить список файлов (по списку поддерживаемых расширений) и предложить юзеру выбрать другой сервер.

GetFileMimeType() отсутсвует в бинарной версии IU, на данный момент. Скрипт не собрался с вызовом этой функции.

Да ладно ? img

zenden2k avatar Mar 18 '15 22:03 zenden2k

а не, она действительно есть, но не работает с иминем файла. Путь к файлу действительно как-то влияет на тип? local name = ExtractFileName(FileName); local mime = GetFileMimeType(name); DebugMessage(mime); //Пусто :)

arhangelsoft avatar Mar 19 '15 06:03 arhangelsoft

Да, влияет. Она проверяет по содержимому, а не по расширению. См. FindMimeFromData. А на unix используется команда file -b --mime-type

zenden2k avatar Mar 19 '15 06:03 zenden2k

будем-с знать, спасиб за функцию, полезно)

arhangelsoft avatar Mar 19 '15 08:03 arhangelsoft

Оно как feature, актуально?

arhangelsoft avatar Dec 03 '18 06:12 arhangelsoft

@arhangelsoft актуально

zenden2k avatar Dec 04 '18 13:12 zenden2k