Jump to content
Sign in to follow this  
optik

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

e65f14188bfa.jpg627e7722635e.jpg

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

покажи метод 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));
}
}

?>

Share this post


Link to post
Share on other sites

попробуйте приведенный код заменить на штатный от 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));
}
}
?>

 

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

Share this post


Link to post
Share on other sites

попробуйте приведенный код заменить на штатный от 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));

}

}

?>

 

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.