Jump to content
Matte01990

Image upload on custom modules

Recommended Posts

Hello everybody. I'm having some troubles in uploading an image and saving the path into db.

 

This is my relevant code:

<?php 

class AdminMyBlockContentController extends ModuleAdminController 
{
	public $bootstrap = true ;
	
	public function __construct() { 
	
		$this->table = 'my_block_content'; 
		$this->className = 'MyBlockContent'; 
		$this->lang = true;
		
		$this->addRowAction('view');
		$this->addRowAction('edit');
		$this->addRowAction('delete');
		
		//fields display
		$this-> fields_list = array(
			'id_my_block_content' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), 
			'nome' => array('title' => $this->l('Name'), 'width' => 120), 
			'desc' => array('title' => $this->l('Description'), 'width' => 120),
			'link' => array('title' => $this->l('Link'), 'width' => 120), 
			'file_url' => array('title' => $this->l('file_url')), 
			'active' => array('title' => $this->l('Enabled'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false, 'class' => 'fixed-width-xs')
			); 
		
		parent::__construct();
	}
	
	//add form
	public function renderForm()
    {
		
		if (!($obj = $this->loadObject(true)))
		   return;
		
		$this->fields_form = array(
			'legend' => array(
				'title' => $this->l('Add/Edit Box')
			), 
			'input' => array(
						array(
							'type' => 'text', 
							'label' => 'Nome', 
							'name' => 'nome'
						), 
						array(
							'type' => 'textarea',
							'label' => 'Description',
							'name' => 'desc',
							'autoload_rte' => 'rte' //Enable TinyMCE editor for short description
						),
						array(
							'type' => 'file', 
							'label' => $this->l('file_url'), 
							'name' => 'file_url',
							'display_image' => true
						),
						array(
							'type' => 'text', 
							'label' => 'Link', 
							'name' => 'link'
						),
						array(
						'type' => 'switch',
						'label' => $this->l('Enable'),
						'name' => 'active',
						'required' => false,
						'class' => 't',
						'is_bool' => true,
						'values' => array(
								array(
									'id' => 'active_on',
									'value' => 1,
									'label' => $this->l('Enabled')
								),
								array(
									'id' => 'active_off',
									'value' => 0,
									'label' => $this->l('Disabled')
								)
						)
					)
			),
			'submit' => array(
					'title' => $this->l('Save'),
					'name' => 'submit_form'
			) 
		);
			
		return parent::renderForm();
	}
	
	public function postProcess()
    {
		//checks if submit
		if (Tools::isSubmit('submit_form'))
		{
			//insert data into my_block_content
			$insertData = array(
				 'nome' => Tools::getValue('nome'),
				 'desc' => Tools::getValue('desc'),
				 'active' => Tools::getValue('active'),
				 'link' => Tools::getValue('link'),
				 'file_url' => Tools::getValue('file_url')
				  );
			Db::getInstance()->insert("my_block_content", $insertData);

		}
		//checks if delete 
		elseif (Tools::isSubmit('delete').$this->table)
		{
			Db::getInstance()->delete('my_block_content', 'id_my_block_content = '.$_GET[id_my_block_content]);
		}
	}
}

Others fields are saved into the right table, so there are no other issues. Any help would be appreciated! Thank you !

Share this post


Link to post
Share on other sites

Thank you for answering!

Where should I add your code snippet? Into postProcess() function? And do I need to specify the exact directory path in order to upload the image? If so, how? Thank you!

Share this post


Link to post
Share on other sites

Solved:

//INSERT 
		if (Tools::isSubmit('submit_form'))
		{	
			//file upload code
			if (isset($_FILES['file_url'])) 
			{	
				$target_dir = _PS_UPLOAD_DIR_;
				$target_file = $target_dir . basename($_FILES['file_url']["name"]);	
				$uploadOk = 1;
				$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
				// Check if image file is a actual image or fake image
				if(isset($_POST["submit"])) 
				{
					$check = getimagesize($_FILES['file_url']["tmp_name"]);
					if($check !== false) {
						echo "File is an image - " . $check["mime"] . ".";
						$uploadOk = 1;
					} else {
						echo "File is not an image.";
						$uploadOk = 0;
					}
				}
				// Check if file already exists
				if (file_exists($target_file)) {
					echo "Sorry, file already exists.";
					$uploadOk = 0;
				}
				// Allow certain file formats
				if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
				&& $imageFileType != "gif" ) {
					echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
					$uploadOk = 0;
				}
				// Check if $uploadOk is set to 0 by an error
				if ($uploadOk == 0) {
					echo "Sorry, your file was not uploaded.";
				}
				else 
				{
					if (move_uploaded_file($_FILES['file_url']["tmp_name"], $target_file)) 
					{
						echo "The file ". basename($_FILES['file_url']["name"]). " has been uploaded.";
						$file_location = basename($_FILES['file_url']["name"]);
					} 
					else 
					{
						echo "Sorry, there was an error uploading your file.";
					}
				}
				
			}
  • Like 1

Share this post


Link to post
Share on other sites

I need help.
when I want to make a preview image on the customer page register. how to do it for version 1.7.5.1

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.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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.


×
×
  • Create New...

Important Information

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