Ошибка не удается создать миниатюру для файла
Я хочу создать миниатюру для файлов (word, excel, видео. ) Это то, что я сделал:
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Ответы 4
Только для видео
Я пробую это, и это дает мне одно и то же изображение каждый раз. P для PowerPoint и W для Word. и я хочу настоящую миниатюру файла
Я думаю, это единственное, что предусмотрено системой
Для этого пока нет хорошего API. Есть NSURLThumbnailDictionaryKey, но YMMV. Вы действительно можете получить значки через UIDocumentInteractionController.
После долгих поисков я нашел это решение:
привет, вы предоставили решение для текстового файла, текстового файла?
@famfamfam нет, я не нашел способа сделать это
спасибо, я попытался применить ваш код и успешно получил изображение для изображения/видео, но через 4-5 секунд я получил эту ошибку: «Это приложение модифицирует механизм автомакета из фонового потока после доступа к механизму из основного потока. . Это может привести к повреждению двигателя и странным авариям». ты можешь помочь?
@famfamfam поместил код, создающий эту проблему, внутрь: DispatchQueue.main.async < // здесь ваш код >
@famfamfam добро пожаловать, если вы можете проголосовать за мой вопрос и мой ответ
Начиная с iOS 13 и macOS 10.15 существует файл QuickLook API миниатюр. Он поддерживает любой формат файла, для которого ОС может предоставить предварительный просмотр: либо потому, что ОС знает этот формат, либо потому, что владелец стороннего формата предоставил плагин QuickLook.
Вот пример, основанный на учебнике Apple:
В macOS до 10.15 в моем приложении я использовал NSWorkspace.shared.icon(forFile:) , который предоставляет значок документа в зависимости от типа файла (но не миниатюру).
спс попробую когда будет время
Кстати, есть документ о том, что использовать до macOS 10.15: Превью или эскизы изображений для macOS 10.14 или более ранней версии. Похоже, что это недоступно на iOS.
получил эту ошибку, нашел URL-адрес файла данных: ошибка generateThumbnailRepresentations: необязательно (домен ошибки = код QLThumbnailErrorDomain = 2 «Нет миниатюры в кэше»)
Случается такое когда после установки, или чаще после переноса на новое оборудование сайта на движке MeidaWiki при загрузке изображений появляется вот такая досадная ошибка:
Вот тогда уж действительно приходится покопаться в конфигурации движка и окружения, что бы понять суть проблемы. На самом же деле всё достаточно просто. Видно, что пользователь от которого работает сервер Apache/php пытается через bash выполнить такую команду:
Но в процессе выполнения получает ошибку:
Я долго думал для чего надо вызывать этот файл. Оказалось всё проще простого. Это команда для программы imagemagick. Как оказалось она у меня не стояла на сервере и естественно я принялся её ставить. Думая, что нужно ставить как модуль PHP приписал следующее:
Как позже оказалось, надо ставить именно отдельную версию imagemagick для Linux Ubuntu в моём случае. Далее вызываю команду для установки самого пакета ImageMagick:
Всё прошло успешно и после установки программы выдаёт данные по каким адресам обращаться для различных действий. Оказалось, что для конвертирования надо выполнять не /usr/bin/convert а /usr/bin/convert.im6 . Понятное дело, что в конфигурационном файле MediaWiki записана старая команда и её надо изменить. Открываем файл LocalSetting.php и находим подобные строки (если не хватает — добавьте):
В зависимости от ОС пути могут быть разными. В моём случае для Ubuntu, мне надо раскомментировать строку $wgImageMagickConvertCommand = "/usr/bin/convert"; и изменить путь до convert c "/usr/bin/convert" на "/usr/bin/convert.im6" .
Вот и всё! Закачиваем новый файл конфигураций на рабочий сервер и перезапускаем его:
Теперь все изображения в MediaWiki должны работать.
Естественно в каждом конкретном случаи пути надо указывать свои. Суть лишь в том, что в настройках MediaWiki движка надо правильно прописать этот путь к файлу convert. В Windows системах он так же может называться convert.exe. В общем главное, что бы у вас на сервере была установлена библиотека ImageMagick (убедиться в этом можно к примеру через php функцию phpinfo() , которая выводит всю сопутствующую информацию о PHP и web сервере в целом) и знать точный путь до файла convert. В Windows серверах к примеру настройка переменной wgImageMagickConvertCommand может выглядеть так:
При использовании новой установки Drupal 7.10 я установил каталог для публичных загрузок в sites/uploads .
Каталог доступен для чтения и записи пользователем PHP5-FPM, поэтому не должно быть никаких проблем с разрешениями.
Да, ответ на самом деле немного более тонкий, чем я предполагал. Оказывается, что imagecache замена D7 требует некоторого внимания в вашем nginx vhost. Без 404-х, отправляемых в Drupal за отсутствующими файлами, изображения не создаются - то, чего я изначально не осознавал, так как предполагал, что они были созданы при загрузке.
Его нужно добавить к определению вашего сервера, и вы должны быть готовы к работе. Ясно, что путь может потребоваться изменить для вашей настройки, но для моей это было.
Обратите внимание, что часть @rewrite должна быть определена соответствующим образом в другом месте файла конфигурации, чтобы это работало. Тем не менее, это уже было в моем, и это также решило мою проблему, так что спасибо jvc26 :)
Повлияет ли это на конфигурацию обратного прокси-сервера nginx? У меня та же проблема, но это, похоже, не исправляет.
Хороший улов. В конечном итоге это привело меня к использованию рекомендованного файла сервера nginx вместо того, который DigitalOcean конфигурирует автоматически при установке Drupal одним щелчком мыши.
Обязательно проверьте путь к публичной файловой системе и временный путь по адресу admin / config / media / file-system
Надеюсь, это кому-нибудь поможет. :)
Хотя вы и говорите, что проверили разрешения, я все равно с этого и начну, поскольку у меня часто возникала эта проблема, и почти всегда это была проблема с разрешениями.
Третье: чтобы исключить права доступа к каталогу, рекурсивно примените 777 к каталогу файлов. Вы можете восстановить более разумные разрешения впоследствии с
В-четвертых: убедитесь, что каталог tmp имеет полные разрешения.
Пятое. Возможно, вам придется начать отладку кода, если вы уже поняли его.
Спасибо за предложения: уже попробовал вышеизложенное, никаких ошибок от Drupal при изменении файловой системы, поэтому разрешения должны быть в порядке. Все процессы PHP выполняются как пользователь, который может писать в этот каталог, поэтому пользователь, который запускает веб-сервер, не влияет на возможности записи. Проверил вручную разрешения, совместимые с записью. / tmp как обычно 777, поэтому проблем с записью нет. Несоответствие пути было отсортировано было ошибкой с моей стороны.
Кстати, проблема была в конфигурации nginx, с проблемами при передаче 404-х в Drupal, которые, в свою очередь, запускают создание миниатюр.
Чтобы завершить ответ Letharion, вот метод, который я использовал для создания эскизов, средних . стилей изображения.
Я уточнил, что сначала проверил все пункты, перечисленные выше, безрезультатно.
Затем (в ОС Linux) я отредактировал /usr/local/etc/suphp.conf, чтобы изменить umask на php , чтобы он мог создавать файлы и каталоги с максимальным разрешением 755 (максимум на 744).
Когда я открываю папку с видео, миниатюры не отображаются. Вместо этого отображался значок VLC по умолчанию. Другие файлы и эскизы изображений отображаются правильно, проблемы возникают только с видео.
Параметр «всегда показывать значки, а не эскизы» не отмечен.
В чем может быть проблема?
Я также установил пакет кодеков K-lite, попытался очистить кэш миниатюр, но он не работает.
@James Я исправил это с помощью Icaros, который также включен в кодеки Windows 7, но есть ли способ сделать это без использования SW? В любом случае, Icaros SW работает в фоновом режиме? Влияет ли это на систему?
@JamesYoung Я попытался установить кодеки Shark007 для Windows 7, но хотя я не выбрал их «предложение» дополнительного программного обеспечения, моя система была заражена нежелательным программным обеспечением: что-то под названием «Mobogenie», «Search Protect», и моя домашняя страница и поиск по умолчанию движок в Google Chrome изменен на поисковик Conduit. Все это еще до того, как закончить установку самого Shark007! К счастью, я создал точку восстановления перед установкой , и я настоятельно рекомендую всем, кто пытается это сделать, сделать то же самое.
У меня такая же проблема. Просто нашел эту ссылку о Media Preview, установил ее и работал отлично. Мои эскизы вернулись:
Просмотр мультимедиа позволяет проводнику Windows отображать миниатюры видео практически для любого формата видео. Если вы видите пустые или общие эскизы для некоторых из ваших видеофайлов, просто установите Media Preview и выберите форматы, которые вы хотите активировать. В следующий раз, когда вы откроете папку с видео, она отобразит миниатюры для всех ваших фильмов.
Эти HKEY_CLASSES_ROOT\.mp4\ShellEx записи были изменены. Я изменил их на это:
слил его и перезагрузил мой компьютер.
Я исправил это, изменив настройки пакета кодеков K-lite:
- В меню «Пуск» выберите « Все программы». .
- Нажмите K-Lite Codec Pack папку .
- Нажмите Tweak Tools для кодеков ».
- Открыть все варианты .
- Нажмите Настройки миниатюр .
- Выберите типы файлов, для которых вы хотите отображать миниатюры, или нажмите « Выбрать Windows по умолчанию» .
- Нажмите Применить и закрыть .
- Перезагрузите компьютер, чтобы изменения вступили в силу.
У меня была такая же проблема, пока я не попытался изменить настройки пакета кодеков K-lite, и мне не удалось получить большинство видеоформатов для предварительного просмотра миниатюр. Я надеюсь, что это работает с вами тоже.
- Откройте параметры пакета кодеков K-lite на вкладке просмотра.
- Слева выберите «Форматы».
- Нажмите «Изменить».
- В разделе «Ассоциация» снимите флажок «со значком». Подайте заявку, и она должна вступить в силу немедленно.
Это сделало это для меня. Ранее я уже давно загружал K-Lite Coded Pack, но удалил его. Я переустановил полный пакет кодеков K-Lite, запустил инструмент настройки кодеков, в разделе Разное => Миниатюры => Выбрать нет => Применить и закрыть. Предварительный просмотр миниатюр мгновенно появился!
Дважды проверьте в программах по умолчанию, чтобы убедиться, что выбранный вами медиаплеер установлен в качестве программы по умолчанию для видеофайлов, а также для всех его ассоциаций. Одна или несколько ассоциаций не могут быть установлены.
1. Для этого откройте командную строку с повышенными правами. Нажмите Start , щелкните, щелкните All Programs , щелкните Accessories правой кнопкой мыши Command Prompt , а затем нажмите Run as administrator .
Если вас попросят ввести пароль администратора или подтверждение, введите пароль или нажмите Разрешить.
2. Введите следующую команду sfc /scannow и нажмите ENTER
3. После завершения сканирования перезагрузите компьютер и проверьте разницу.
Команда sfc / scannow сканирует все защищенные системные файлы и заменяет неправильные версии правильными версиями Microsoft.
- Вы также можете использовать кодеки Windows 7 вместо VLC, и он работает со всеми миниатюрами.
С другой стороны, очевидно, что если у вас мало места на диске, Windows не будет создавать для вас миниатюры.
Восстановите место на диске C с помощью некоторых необычных методов или используйте Ccleaner, и вы должны начать видеть эскизы. Я думаю, что минимальное пространство, которое вам нужно на диске Windows, составляет 500 МБ.
Я пытаюсь создать миниатюру ранее загруженных изображений с помощью этой функции.
Исходные изображения загружаются в mysite / used_uploads, а эскизы должны создаваться в mysite / used_uploads_thb.
Функция эскиза запускается сразу после загрузки оригинала.
Я также изменил права доступа к каталогу, как показано ниже, но проблема не устранена.
Это весь сценарий. Последний шаг дает указанную выше ошибку.
Я ценю вашу помощь.
Существует большая разница между путем, который начинается с косой черты (так '/used_uploads_thb' называемый абсолютный путь), и тем, который не начинается ( 'used_uploads_thb' ). Вы должны использовать пути, которые явно начинаются с __DIR__ .
@DCoder, спасибо. chmod будет принимать его только как (used_uploads_thb), в то время как imagejpeg не работает, если он также не используется в моем коде.
Только для записи.
Проблема заключалась в пути назначения для миниатюры. В моем исходном коде был только каталог. Я ошибочно предполагал, что имя будет таким же, как у исходного файла, и будет создано автоматически. Не так.
Итак, вот рабочий код: preg_replace существует только потому, что я помещаю эскизы в отдельный каталог с исходным изображением.
Убедитесь, что у вас есть права доступа к обоим каталогам, равным 0777. Или имя файла исходного изображения никогда не использует пространство, если вы работаете с Linux, потому что вам нужно добавить escape-символ пробела '\' в каждое пространство от вашего имени файла, убедитесь, что после загрузки вы переименовываете это к чему-то, использующему
$ src = md5 ('252-558ec2e5dc45c-alfa-romeo-giulia - 2.jpg'). '.jpg';
Благодарю. Я не знаком с правами доступа к каталогам. Где я могу это проверить / изменить? Обратите внимание, что файлы загружаются правильно. Немного странно, что он может загружать файл, но не создавать его.
Читайте также: