Jump to content

Загрузка файла при оформлении заказа


Recommended Posts

Подскажите варианты решения

 

Нужно клиенту предоставить возможность загрузить файл при оформлении заказа (например файл с реквизитами)

 

Форму со страницы контактов взял, а с контроллерами не могу разобраться...

Share this post


Link to post
Share on other sites

Смотря для какой версии. Я вот делал недавненько, но напрочь забыл для какой версии престы я это делал...в общем это решение либо для 1.5 либо для 1.6.

 

Делаешь в общем в форме шаблона новый input:

<input type="hidden" name="MAX_FILE_SIZE" value="8388608" /> 
<input accept="image/jpg,image/png,image/jpeg,image/gif" type="file" name="fileUpload" id="fileUpload" />

Далее в функции обработки данных из формы нужно добавить это:

$extension = array('.png', '.jpeg', '.gif', '.jpg');
$file_attachment = Tools::fileAttachment('fileUpload');

Далее такой код:

if (!empty($file_attachment['name']) && $file_attachment['error'] != 0){
	$this->errors[] = Tools::displayError('An error occurred during the file-upload process.');
} else if (!empty($file_attachment['name']) && !in_array(Tools::strtolower(substr($file_attachment['name'], -4)), $extension) && !in_array(Tools::strtolower(substr($file_attachment['name'], -5)), $extension)){
	$this->errors[] = Tools::displayError('Bad file extension');
} else {
	if (isset($file_attachment['rename']) && !empty($file_attachment['rename']) && rename($file_attachment['tmp_name'], _PS_MODULE_DIR_.$this->name.'/upload_images/'.basename($file_attachment['rename'])))
	{
		$comment->file_name = $file_attachment['rename'];
		@chmod(_PS_MODULE_DIR_.$this->name.'/upload_images/'.basename($file_attachment['rename']), 0664);
	}
}

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

Share this post


Link to post
Share on other sites

Для 1.6 должно подходить.

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

Share this post


Link to post
Share on other sites

Если там заказ отправляется по средствам Ajax на сервер то тогда нужно еще понимать что через Ajax файлы нельзя передать, есть костыли, но это костыли..и тем более не кроссбраузерные, вроде IE 10+

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Уважаемый Kerm! сори, если показалось что решил похамить. 

 

Я только начинаю разбираться с контроллерами, поэтому хотел прояснить причину.

Share this post


Link to post
Share on other sites

А можно было бы из оформления заказа в 5 шагов сделать оформление в 1 шаг, если мне не нужны шаги с 3 по 5? 

Возможно ли соединить 1 шаг со 2 на одной странице и тогда на ней подключить php-ную загрузку файла?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More