Перейти к содержанию
optik

[Решено] Не могу разобраться с опцией файл

Рекомендуемые сообщения

Никак не могу понять,не работает опция файл,при попытке загрузки файла на сервер выдаёт ошибку "Недопустимый тип файла"
Речь идёт не о файлах для скачивания,а именно о файлах которые через опцию "Файл" могут загружать клиенты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не надо грузить невесть что.

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

надо что-то еще? - добавляем расширения и mime-type в разрешенные (в настройках магазина) и радуемся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так проблема именно в том,что он вообще никакие файлы не загружает,даже те,которые уже заданы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ошибку "Недопустимый тип файла" ты получишь ТОЛЬКО если расширение не указано в разрешенных. ВСЁ.

в других ситуациях будет ДРУГАЯ ошибка.

покажи товар с опцией файл на пациенте и скриншот настроек магазина (вкладка сервер) из админки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ошибку "Недопустимый тип файла" ты получишь ТОЛЬКО если расширение не указано в разрешенных. ВСЁ.

в других ситуациях будет ДРУГАЯ ошибка.

покажи товар с опцией файл на пациенте и скриншот настроек магазина (вкладка сервер) из админки.

http://lograr.ru/tipografia/reklamnaaya-poligrafiya/bukleti.html

e65f14188bfa.jpg627e7722635e.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

покажи метод upload() из контроллера product.php

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

покажи метод upload() из контроллера product.php

public function upload() {

$this->language->load('product/product');
 
$json = array();
 
if (!empty($this->request->files['file']['name'])) {
$filename = basename(preg_replace('/[^a-zA-Z0-9\.\-\s+]/', '', html_entity_decode($this->request->files['file']['name'], ENT_QUOTES, 'UTF-8')));
 
if ((utf8_strlen($filename) < 3) || (utf8_strlen($filename) > 64)) {
        $json['error'] = $this->language->get('error_filename');
  }  
 
$allowed = array();
 
$filetypes = explode(',', $this->config->get('config_upload_allowed'));
 
foreach ($filetypes as $filetype) {
$allowed[] = trim($filetype);
}
 
if (!in_array(substr(strrchr($filename, '.'), 1), $allowed)) {
$json['error'] = $this->language->get('error_filetype');
        }
 
if ($this->request->files['file']['error'] != UPLOAD_ERR_OK) {
$json['error'] = $this->language->get('error_upload_' . $this->request->files['file']['error']);
}
} else {
$json['error'] = $this->language->get('error_upload');
}
 
if (!$json) {
if (is_uploaded_file($this->request->files['file']['tmp_name']) && file_exists($this->request->files['file']['tmp_name'])) {
$file = basename($filename) . '.' . md5(mt_rand());
 
// Hide the uploaded file name so people can not link to it directly.
$json['file'] = $this->encryption->encrypt($file);
 
move_uploaded_file($this->request->files['file']['tmp_name'], DIR_DOWNLOAD . $file);
}
 
$json['success'] = $this->language->get('text_upload');
}
 
$this->response->setOutput(json_encode($json));
}
}

?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте приведенный код заменить на штатный от ocstore 1.5.5.1.2

public function upload() {
$this->language->load('product/product');

$json = array();

if (!empty($this->request->files['file']['name'])) {
$filename = basename(preg_replace('/[^a-zA-Z0-9\.\-\s+]/', '', html_entity_decode($this->request->files['file']['name'], ENT_QUOTES, 'UTF-8')));

if ((utf8_strlen($filename) < 3) || (utf8_strlen($filename) > 64)) {
$json['error'] = $this->language->get('error_filename');
}

// Allowed file extension types
$allowed = array();

$filetypes = explode("\n", $this->config->get('config_file_extension_allowed'));

foreach ($filetypes as $filetype) {
$allowed[] = trim($filetype);
}

if (!in_array(substr(strrchr($filename, '.'), 1), $allowed)) {
$json['error'] = $this->language->get('error_filetype');
}

// Allowed file mime types
$allowed = array();

$filetypes = explode("\n", $this->config->get('config_file_mime_allowed'));

foreach ($filetypes as $filetype) {
$allowed[] = trim($filetype);
}

if (!in_array($this->request->files['file']['type'], $allowed)) {
$json['error'] = $this->language->get('error_filetype');
}

if ($this->request->files['file']['error'] != UPLOAD_ERR_OK) {
$json['error'] = $this->language->get('error_upload_' . $this->request->files['file']['error']);
}
} else {
$json['error'] = $this->language->get('error_upload');
}

if (!$json && is_uploaded_file($this->request->files['file']['tmp_name']) && file_exists($this->request->files['file']['tmp_name'])) {
$file = basename($filename) . '.' . md5(mt_rand());

// Hide the uploaded file name so people can not link to it directly.
$json['file'] = $this->encryption->encrypt($file);

move_uploaded_file($this->request->files['file']['tmp_name'], DIR_DOWNLOAD . $file);

$json['success'] = $this->language->get('text_upload');
}

$this->response->setOutput(json_encode($json));
}
}
?>

 

только копию файла перед этим сделайте на всякий случай

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте приведенный код заменить на штатный от ocstore 1.5.5.1.2

public function upload() {

$this->language->load('product/product');

$json = array();

if (!empty($this->request->files['file']['name'])) {

$filename = basename(preg_replace('/[^a-zA-Z0-9\.\-\s+]/', '', html_entity_decode($this->request->files['file']['name'], ENT_QUOTES, 'UTF-8')));

if ((utf8_strlen($filename) < 3) || (utf8_strlen($filename) > 64)) {

$json['error'] = $this->language->get('error_filename');

}

// Allowed file extension types

$allowed = array();

$filetypes = explode("\n", $this->config->get('config_file_extension_allowed'));

foreach ($filetypes as $filetype) {

$allowed[] = trim($filetype);

}

if (!in_array(substr(strrchr($filename, '.'), 1), $allowed)) {

$json['error'] = $this->language->get('error_filetype');

}

// Allowed file mime types

$allowed = array();

$filetypes = explode("\n", $this->config->get('config_file_mime_allowed'));

foreach ($filetypes as $filetype) {

$allowed[] = trim($filetype);

}

if (!in_array($this->request->files['file']['type'], $allowed)) {

$json['error'] = $this->language->get('error_filetype');

}

if ($this->request->files['file']['error'] != UPLOAD_ERR_OK) {

$json['error'] = $this->language->get('error_upload_' . $this->request->files['file']['error']);

}

} else {

$json['error'] = $this->language->get('error_upload');

}

if (!$json && is_uploaded_file($this->request->files['file']['tmp_name']) && file_exists($this->request->files['file']['tmp_name'])) {

$file = basename($filename) . '.' . md5(mt_rand());

// Hide the uploaded file name so people can not link to it directly.

$json['file'] = $this->encryption->encrypt($file);

move_uploaded_file($this->request->files['file']['tmp_name'], DIR_DOWNLOAD . $file);

$json['success'] = $this->language->get('text_upload');

}

$this->response->setOutput(json_encode($json));

}

}

?>

 

только копию файла перед этим сделайте на всякий случай

Спасибо,но этот вариант мне не подходит.

Все видоизменения которые у меня произведены мне нужны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что мешает создать копию оригинала файла, проверить, потом восстановить копию?

Раз в данный момент вообще никак не работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что мешает создать копию оригинала файла, проверить, потом восстановить копию?

Раз в данный момент вообще никак не работает

И вот итог: http://lograr.ru/tipografia/reklamnaaya-poligrafiya/bukleti.html

Всё в ошибках.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Однако, файл .jpg загрузился, судя по алерту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Однако, файл .jpg загрузился, судя по алерту.

Да,файлы стали грузиться,буду в коде капаться...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы верно код вставили? - именно приведенный вами заменить на приведенный мной (специально не стал только код функции давать, а добавил с окончаниями как в вашем, чтоб не было путаницы)

 

Потому что ошибки, которые у вас появились, не имеют отношения к приведенному коду:

Notice: Undefined variable: startdate in /home/k/kabankitru/lograr/public_html/vqmod/vqcache/vq2-catalog_view_theme_BigOne_template_product_product.tpl on line 22
Notice: Undefined variable: quantity in /home/k/kabankitru/lograr/public_html/vqmod/vqcache/vq2-catalog_view_theme_BigOne_template_product_product.tpl on line 55
Notice: Undefined variable: quantity in /home/k/kabankitru/lograr/public_html/vqmod/vqcache/vq2-catalog_view_theme_BigOne_template_product_product.tpl on line 55
Notice: Undefined variable: quantity in /home/k/kabankitru/lograr/public_html/vqmod/vqcache/vq2-catalog_view_theme_BigOne_template_product_product.tpl on line 312
Notice: Undefined variable: quantity in /home/k/kabankitru/lograr/public_html/vqmod/vqcache/vq2-catalog_view_theme_BigOne_template_product_product.tpl on line 313style="display:none" name="quantity" size="2" value="1" />

Зато - обратите внимание - файлы стали загружаться

 

Попробуйте переместить куда-нибудь файл vq2-catalog_view_theme_BigOne_template_product_product.tpl из папки vqmod/vqcache и перегрузите страницу товара в браузере по F5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы верно код вставили? - именно приведенный вами заменить на приведенный мной (специально не стал только код функции давать, а добавил с окончаниями как в вашем, чтоб не было путаницы)

 

Потому что ошибки, которые у вас появились, не имеют отношения к приведенному коду:

Notice: Undefined variable: startdate in /home/k/kabankitru/lograr/public_html/vqmod/vqcache/vq2-catalog_view_theme_BigOne_template_product_product.tpl on line 22
Notice: Undefined variable: quantity in /home/k/kabankitru/lograr/public_html/vqmod/vqcache/vq2-catalog_view_theme_BigOne_template_product_product.tpl on line 55
Notice: Undefined variable: quantity in /home/k/kabankitru/lograr/public_html/vqmod/vqcache/vq2-catalog_view_theme_BigOne_template_product_product.tpl on line 55
Notice: Undefined variable: quantity in /home/k/kabankitru/lograr/public_html/vqmod/vqcache/vq2-catalog_view_theme_BigOne_template_product_product.tpl on line 312
Notice: Undefined variable: quantity in /home/k/kabankitru/lograr/public_html/vqmod/vqcache/vq2-catalog_view_theme_BigOne_template_product_product.tpl on line 313style="display:none" name="quantity" size="2" value="1" />

Зато - обратите внимание - файлы стали загружаться

 

Попробуйте переместить куда-нибудь файл vq2-catalog_view_theme_BigOne_template_product_product.tpl из папки vqmod/vqcache и перегрузите страницу товара в браузере по F5

Спасибо,теперь всё работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.