Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

интеграция opencart с облачным сервисом хранения двоичных файлов


Mixxxa163

Recommended Posts

Добрый день, собственное вопрос в шапке, есть ли такое типовое решение или модуль(azure Итд)? Вопрос встал в связи с тем, что в ИМ у карточек товаров много pdf файлов которые сейчас хранятся в storage у хостера, пока добавлен 1 бренд затяно 7 гб уже.. При дальнейшем масштабировании это будет значительно сокращать место.

Надіслати
Поділитися на інших сайтах


15 минут назад, cloudrc сказал:

Dropbox, GoogleDrive

На фронте выводите ссылки на файлы

Понятно, что можно разместить ссылки и из облака с его урлом будут открываться pdf... а вот можно ли сделать так, чтобы они лежали как бы в директории на хостинге и имели соответствующий url, чтобы также ранжировались и участвовали в поиске...? у меня специфика такая, что мануалы зачастую выше ранжируются карточки.

Надіслати
Поділитися на інших сайтах


Простой вариант, не претендует на идеальное решение:

Идем по пути: catalog/controller, создаем новую папку, называем Download. Внутри нее создаем файл main.php.

В этот файл кладем следующий код:

<?php 
class ControllerDownloadMain extends Controller {
public function index() {

$name = $this->request->get['pdf'] . ".pdf"; 
$path = "https://www.dropbox.com/s/" . $this->request->get['pdf'] . "?dl=1";

header("HTTP/1.1 200 OK"); 
header("Content-type: application/pdf");
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); 
$agent = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : '';
$ie = preg_match('@MSIE ([0-9].[0-9]{1,2})@', $agent);
if ($ie){
    header('
        Content-Disposition: attachment; filename="' . $name . '"'
    ); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
}else{
    header('Content-Disposition: attachment;filename="' . $name . '"');
    header('Pragma: no-cache');
}
readfile($path);
}
}
?>

 

В переменной $path меняем Dropbox на то, что Вам нужно

Во фронт вставляем ссылку вида:

<a href="https://site.ru/index.php?route=download/main&pdf=l1t1dicz8og1aa6">Ссылка</a>

Где l1t1dicz8og1aa6 идентификатор скачиваемого файла. Хранить его можем в каком-нибудь поле, например location

Тогда ссылка будет 

<a href="https://site.ru/index.php?route=download/main&pdf=<?php echo $location; ?>">Ссылка</a>

 

Если файлов несколько, то вставляем их идентификаторы в поле (Location, например) через запятую

l1t1dicz8og1aa6,d5f1dicz8og1qd1,gfdg7fd65363

 

Во фронте пишем это:

<?php 
$location = explode(",", $location);
foreach ($location as $pdfs) { 
?>
<a href="https://site.ru/index.php?route=download/main&pdf=<?php echo $pdfs; ?>">Ссылка</a>
<?php } ?>

 

  • +1 1
Надіслати
Поділитися на інших сайтах

Я не обратил внимания, что у Вас OpenCart 3-й версии

Во фронте пишем это:

{% set location = explode(",", location) %}
{% for pdfs in location %} 
<a href="https://site.ru/index.php?route=download/main&pdf={{ pdfs }}">Ссылка</a>
{% endfor %}

 

И не забываем добавить обработку необходимого поля (location, например) в контроллере product.php

  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.