Ограничение поддерживаемых файлов хостингом а так же Squirrel::GetFileMimeType
Собственно хостинги ограничиваются не только рамером файла, но и весьма успешно типами файлов. Что если это тоже учитывать, на уровне программы? т.е. если изображений хостинг чуть менее чем рандомный, то ПО таким образом ищет тот, который поддерживает расширение файла и отправляет туда.
т.е. некий скрипт/xml атрибут задает список поддерживаемых файлов по расширению, т.е. так "png;jpg" для одного хостинга и для другого "gif;png;jpg;xps"
в squirrel запилить какую-нибудь GetSupportedExtenstionlist() { local a = ["png","bmp","etc..."]; }
эту проверку можно и в скрипте написать, но проблема в том, что IU не сможет сделать 2 крутые вещи:
- Для выбранного списка файла предложить те сервера, которые их поддерживают.
- При лучайном выборе хостинга, nut не может сказать "передай другому, я не умею это", и цепочка обломится с ошибкой.
- Хостинг не поддерживает, юзер это не знает, грузит картинку и ложит непонятные предметы "Почему не работает?!111"
Собственно в servers.xml завести атрибут exts="" для type="image", в котором перечисляются через запятую, расширения, которые поддерживает конкретный хостинг картинок.
По расширения файла выдавать на выбор естественно те хостинги, которые поддерживают указанный формат.
Аргументирование: Image Uploader ну вот совсем никак не помог мне загрузить gif на хостинг. Вся прелесть в том что, все фото-хосты поддерживают gif вот таким образом: вырезают первый фрейм и считают, что успешно загрузили картинку.
Идея загрузки на случайный сервер мне не нравится. Такая функция не поддерживается, хотя может она и работает (когда-то работала). Можно просто перед загрузкой проверить список файлов (по списку поддерживаемых расширений) и предложить юзеру выбрать другой сервер.
GetFileMimeType() отсутсвует в бинарной версии IU, на данный момент. Скрипт не собрался с вызовом этой функции.
Да ладно ? 
а не, она действительно есть, но не работает с иминем файла. Путь к файлу действительно как-то влияет на тип? local name = ExtractFileName(FileName); local mime = GetFileMimeType(name); DebugMessage(mime); //Пусто :)
Да, влияет. Она проверяет по содержимому, а не по расширению. См. FindMimeFromData.
А на unix используется команда file -b --mime-type
будем-с знать, спасиб за функцию, полезно)
Оно как feature, актуально?
@arhangelsoft актуально