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

Как сгенерировать ссылку на прямое скачивание файла


AndreyYakovlev

Recommended Posts

Добрый день.

Мне нужно, чтобы в виджете Категории висел пруфлинк на прайс-лист. Нашёл в админке Категории-Загрузки, загрузил туда файл. Но как мне сгенерировать линк на этот файл, чтобы он был доступен для общего скачивания?

Аналогичный вопрос и про модуль статей. Как следует дописать админку, чтобы сгенерировать ссылку на написанную статью?

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


..как мне сгенерировать линк на этот файл, чтобы он был доступен для общего скачивания?

1. залить файл на хостинг, например в папку public_download или около того.

2. собственно прописать путь к файлу в теге <a href='.. >

или я Вас неправильно понял?

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


1. залить файл на хостинг, например в папку public_download или около того.

2. собственно прописать путь к файлу в теге <a href='.. >

или я Вас неправильно понял?

неправильно) так можно конечно, но не юзабельно это.

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

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

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


возможно это то, что Вам нужно https://opencartforum.com/files/file/49-w-pricelist/

Да это мне пригодится тоже, но в будущем. Добавил в закладки пока)

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

Хотелось бы узнать как происходит скачка файлов из админ-категории-загрузки и попробовать адаптировать это под мои нужды...

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


Нужен просто статичный файл, который можно редактировать из админки.

если "прайс" редактировать - вам в платные услуги.
Надіслати
Поділитися на інших сайтах

если "прайс" редактировать - вам в платные услуги.

да ну нет же)) я выше же описал, что я хочу. забудьте про слово прайс, это просто для примера я привёл.

попробую ещё раз объяснить, подоходчивей.

представьте есть блок на сайте, а в нём ссылка на файл, к примеру, www.myshop.com/some_file.doc. Кликаем по ссылке и скачиваем файл без лишних вопросов к себе на компьютер.

теперь я захотел обновить этот файл. Для этого захожу в админку, загружаю с компьютера новый файл. И в том блоке на сайте ссылка становится www.myshop.com/some_other_file.xls

вот такой мне нужен модуль. не думаю, что это тянет на платные услуги

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


Ставите html-модуль, в нем прописываете свою ссылку, заливаете some_file.doc на фтп.

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

Или вам так принципиально, чтобы были разные названия?

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


В итоге копаний справился сам. Немного модифицировал стандартный Каталог-Загрузки и его применил к своим целям

Кому интересно может будет читайте что я сделал:

1. Сначала отредактировал admin/controller/catalog/download.php. Убираем в двух местах md5(rand())

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

2. catalog/model/catalog/category.php

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

public function getFileName($id = 1) {
		$result = $this->db->query("SELECT * FROM " . DB_PREFIX . "download WHERE `download_id` = '" . $id . "'")->rows;
		return $result[0]['filename'];
	}
функция вернёт имя файла.

3. Теперь отредактируем контроллер catalog/controller/module/category.php и сформируем путь к этому файлу:

вставить это в тело функции protected function index()

$this->data['price']    = HTTP_SERVER . 'download/' . $this->model_catalog_category->getFileName(1);

4. Ну и наконец вставим ссылку в представление catalog/view/theme/ваша_тема/template/module/category.tpl

<a href="<?php echo $price; ?>">Скачать прайс-лист</a>
  • +1 2
Надіслати
Поділитися на інших сайтах


  • 3 months later...

Бьюсь как печенег над простой проблемой, не открываются ссылки на файл с прайсом в xls уже и в архив его пихал ни чего не помогает, даже кидал его на другой свой сайт с другим движком интер-магазина ни чего не помогает все время выпадает вот такая ошибка:

Ошибка доступа 404 к указанной странице

Данная страница не имеет отношения к запрашиваемому сайту.

Страница, которую Вы запрашиваете, отсутствует:

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

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

- Возможно, что содержимое сайта еще не размещено владельцем

может чем поможете, а то у меня уже мозги кипят почему так

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


а можно по подробнее, как это правильно? я вбивал ссылку уже из Windows commandera что бы не ошибиться и все равно одна и таже ошибка, может дело в атрибутах папки в которую ложу файл? может их нужно изменить?

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


я вбивал ссылку уже из Windows commandera что бы не ошибиться и все равно одна и таже ошибка

ну, что тут сказать...

:huh: :wacko: :lol:

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

  • 1 month later...
AndreyYakovlev, спасибо, классное решения. А вот никто не подскажет как подправить код, чтоб при загрузке файла имя его менялось. Например, чтоб загружать файл, название которого на русском, а оно менялось на английское.
Надіслати
Поділитися на інших сайтах

  • 2 years later...
  • 3 months later...

Добрый день, нашел две проблемы:

 

 

$this->data['price'] = HTTP_SERVER . 'download/' . $this->model_catalog_category->getFileName(1);

 

 

1 - GetFileName(1),но при загрузке файла ID каждый раз другой!

2 - При удалении файла из меню "Файлы для скачивания-Загрузки" он физически не удаляется. Как быть, если старый файл надо удалить (простой менеджер не заходит на ФТП) ?
 

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


  • 2 months later...

Мне нужна была только первая часть от сообщения 

AndreyYakovlev

для версии 1.5.5.1.2

несколько по другому там в файле admin/controller/catalog/download.php, чтобы хеш не писался, а файл грузился в своем расширении удалил лишнее, получилось так:

if (!isset($json['error'])) {
			if (is_uploaded_file($this->request->files['file']['tmp_name']) && file_exists($this->request->files['file']['tmp_name'])) {
				 
				$json['filename'] = $filename;
				$json['mask'] = $filename;
				
				move_uploaded_file($this->request->files['file']['tmp_name'], DIR_DOWNLOAD . $filename);
			}
						
			$json['success'] = $this->language->get('text_upload');
		}	
Надіслати
Поділитися на інших сайтах

  • 2 weeks later...
  • 1 month later...
  • 6 months later...

PolarOne, теперь злоумышленникам не надо даже париться - можно тоннами грузить php-shell`ы

чего это? они же через админку только могут загрузить, а чтобы туда попасть нужно знать логин и пароль.

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


  • 2 years later...

Привет. Может кому-то понадобится.

OpenCart 2.3.0.2

Стояла задача сделать на сайте скачиваемый прайс. Чтобы менеджеры смогли самостоятельно редактировать и закачивать прайс-лист в виде файла через админку, и при этом система не ругалась при скачке.

Что я сделал:

1. Избавимся от злополучного хеша при загрузке. Меняем 2 файла через OCMOD

<?xml version="1.0" encoding="utf-8"?>
<modification>
	<code>deleteDownloadHash</code>
	<name>Delete Download Hash</name>
	<version>1.0</version>
	<author>Aleksey Isaev</author>
	<link></link>
	<file path="admin/controller/catalog/download.php">
		<operation>
			<search><![CDATA[
				$file = $filename . '.' . token(32);
			]]></search>
			<add position="replace"><![CDATA[
				$file = $filename;
			]]></add>
		</operation>
	</file>  
</modification>
<?xml version="1.0" encoding="utf-8"?>
<modification>
	<code>deleteUploadHash</code>
	<name>Delete Upload Hash</name>
	<version>1.0</version>
	<author>Aleksey Isaev</author>
	<link></link>
	<file path="catalog/controller/tool/upload.php">
		<operation>
			<search><![CDATA[
				$file = $filename . '.' . token(32);
			]]></search>
			<add position="replace"><![CDATA[
				$file = $filename;
			]]></add>
		</operation>
	</file>
</modification>

2. При скачке из стандартной папки system/storage/download вылезает 403 страница. Попробовал сменить директорию скачивания.

Для этого создаем в корневой директории папку price, и далее в config.php и в admin/config.php меняем путь.

define('DIR_DOWNLOAD', 'ваш путь/price');

Если вылезет снова 403 - можно поиграться правами этой папки. Заработало.

 

3. Теперь осталось прописать ссылку на скачивание файла в шаблоне страницы типа <a href="price/price.pdf" target="blank">Скачать PDF</a>

 

Минусы - необходимо, чтобы название файла было четким, имело четкое расширение. Это можно прописать в инструкции менеджерам.

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


  • 2 years later...

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

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

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

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

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

Вхід

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

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

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

Important Information

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