mikeevstropov Опубликовано 21 октября, 2015 Жалоба Поделиться Опубликовано 21 октября, 2015 Странная штука, пропадают иногда сразу, иногда на следующий день. Пропадает, всмысле, на странице товара она не открывается, буд-от кто-то с директории грохнул. Сначала думал, что симпла хранит только хотлинки, так ведь она их скачивает. Ещё рассматривал вариант, что при авто-подборке получается дубль, но все равно картинка отображалась ведь. Какие есть предположения?Спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 21 октября, 2015 Жалоба Поделиться Опубликовано 21 октября, 2015 (изменено) Странная штука, пропадают иногда сразу, иногда на следующий день. Пропадает, всмысле, на странице товара она не открывается, буд-от кто-то с директории грохнул. Сначала думал, что симпла хранит только хотлинки, так ведь она их скачивает. Ещё рассматривал вариант, что при авто-подборке получается дубль, но все равно картинка отображалась ведь. Какие есть предположения?Спасибо!а сами фото проверяли? они есть в директории? в админке открывает? Изменено 21 октября, 2015 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
mikeevstropov Опубликовано 22 октября, 2015 Автор Жалоба Поделиться Опубликовано 22 октября, 2015 (изменено) а сами фото проверяли? они есть в директории? в админке открывает?В админке, тоже не открывает. Но в папке фото лежит.Если открывать без параметров, пишет, как и должен "Bad token".Через {debug} имя файла верное. Firebug говорит "не удается загрузить указанный url".Путь до файла верный. (соседние фото рядом открываются без проблем).Права на все фото "rwxrwxrwx". Имя файла вменяемое.Папку /compiled/ очистил, кеш браузеров чист.Проблему заметил и на reg.ru и ihc.ru. (вроде, хостер не при чем) Изменено 22 октября, 2015 пользователем mikeevstropov Цитата Ссылка на сообщение Поделиться на другие сайты
mikeevstropov Опубликовано 22 октября, 2015 Автор Жалоба Поделиться Опубликовано 22 октября, 2015 (изменено) Есть!Я был не прав. Проблемы в имени файла.Символ "|" в имени кодируется как "_%7C_".Но этот символ в файле сохраняется, как нижний дефис.Однако, не заметил сразу. Странно, почему проблема возникала через какое-то время.Еще странно, почему api записывает в базу и имя файла разные строки.Теперь осталось найти где происходит кодирование спец-символов.Не думаю, что проблемы могут быть только в этом символе. Наверно, тут происходит преобразование в имени файла. (api/Image.php) private function correct_filename($filename) { $ru = explode('-', "А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я"); $en = explode('-', "A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch---Y-y---E-e-YU-yu-YA-ya"); $res = str_replace($ru, $en, $filename); $res = preg_replace("/[\s]+/ui", '-', $res); $res = preg_replace("/[^a-zA-Z0-9\.\-\_]+/ui", '', $res); $res = strtolower($res); return $res; } Используется функция выше при загрузке изображения. (api/Image.php) public function upload_image($filename, $name) { // Имя оригинального файла $name = $this->correct_filename($name); $uploaded_file = $new_name = pathinfo($name, PATHINFO_BASENAME); $base = pathinfo($uploaded_file, PATHINFO_FILENAME); $ext = pathinfo($uploaded_file, PATHINFO_EXTENSION); if(in_array(strtolower($ext), $this->allowed_extentions)) { while(file_exists($this->config->root_dir.$this->config->original_images_dir.$new_name)) { $new_base = pathinfo($new_name, PATHINFO_FILENAME); if(preg_match('/_([0-9]+)$/', $new_base, $parts)) $new_name = $base.'_'.($parts[1]+1).'.'.$ext; else $new_name = $base.'_1.'.$ext; } if(move_uploaded_file($filename, $this->config->root_dir.$this->config->original_images_dir.$new_name)) return $new_name; } return false; } А вот тут, вроде бы, инициация загрузки. (simpla/ProductAdmin.php) // Загрузка изображений из интернета и drag-n-drop файлов if($images = $this->request->post('images_urls')) { foreach($images as $url) { // Если не пустой адрес и файл не локальный if(!empty($url) && $url != 'http://' && strstr($url,'/')!==false) $this->products->add_image($product->id, $url); elseif($dropped_images = $this->request->files('dropped_images')) { $key = array_search($url, $dropped_images['name']); if ($key!==false && $image_name = $this->image->upload_image($dropped_images['tmp_name'][$key], $dropped_images['name'][$key])) $this->products->add_image($product->id, $image_name); } } } Если кто знает, что тут можно поправить, буду признателен. =) Изменено 22 октября, 2015 пользователем mikeevstropov Цитата Ссылка на сообщение Поделиться на другие сайты
Решение Kors Опубликовано 22 октября, 2015 Решение Жалоба Поделиться Опубликовано 22 октября, 2015 На демо сайте пробовал задать товару файл со стороннего ресурса как http://site.ru/temp/dom|dom.gifСимвол "|" в имени преобразуется в "%7C".Все прекрасно загружается и отображается, работает как обычно. Если не нравится изменение в имени, меняйте по-своему в api/Image.php ... Цитата Ссылка на сообщение Поделиться на другие сайты
mikeevstropov Опубликовано 22 октября, 2015 Автор Жалоба Поделиться Опубликовано 22 октября, 2015 На демо сайте пробовал задать товару файл со стороннего ресурса как http://site.ru/temp/dom|dom.gifСимвол "|" в имени преобразуется в "%7C".Все прекрасно загружается и отображается, работает как обычно. Если не нравится изменение в имени, меняйте по-своему в api/Image.php ...Спасибо! Навели на мысль! Все дело в том, что я работаю так, сливаю с сервака файлы, пакованные в tar делаю правки, и гружу обратно.У меня винда. При распаковке, символ "|", как недопустимый, ось преобразует в "_". Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.