I uploaded some files for each customer in magento....
Then i listed the customers details with the uploaded file name ..
I need to download the file using magento code
This is the code:
public function downloadAction() {
$entityid = $this->getRequest()->getParam('entity_id');
$customer_data = Mage::getModel('customer/customer')->load($entityid);
$filename = '';
if($customer_data){
$filename = $customer_data->getFileuploadname();
}
$filepath = '../uploads/'.$filename;
if (! is_file ( $filepath ) || ! is_readable ( $filepath )) {
throw new Exception ( );
}
$this->getResponse ()
->setHttpResponseCode ( 200 )
->setHeader ( 'Pragma', 'public', true )
->setHeader ( 'Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true )
->setHeader ( 'Content-type', 'application/force-download' )
->setHeader ( 'Content-Length', filesize($filepath) )
->setHeader ('Content-Disposition', 'inline' . '; filename=' . basename($filepath) );
$this->getResponse ()->clearBody ();
$this->getResponse ()->sendHeaders ();
readfile ( $filepath );
//exit(0);
}
But it didsplays errors something like:
Trace:
#0 D:\wamp\www\mysite\app\code\core\Mage\Core\Controller\Varien\Action.php(419): Managecustomers_Users_IndexController->downloadAction()
#1 D:\wamp\www\mysite\app\code\core\Mage\Core\Controller\Varien\Router\Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('download')
#2 D:\wamp\www\mysite\app\code\core\Mage\Core\Controller\Varien\Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#3 D:\wamp\www\mysite\app\code\core\Mage\Core\Model\App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#4 D:\wamp\www\mysite\app\Mage.php(683): Mage_Core_Model_App->run(Array)
#5 D:\wamp\www\mysite\index.php(87): Mage::run('', 'store')
#6 {main}
The uploads
folder is in magento root folder...
How can i download the file....
The $filename
have the filename uploaded that is coming from database...
EDIT :
When i removed the code:
if (! is_file ( $filepath ) || ! is_readable ( $filepath )) {
throw new Exception ( );
}
Then changed the filepath as :
$filepath = 'http://localhost/mysite/uploads/'.$filename;
Then downloading done perfectly....
Below code is performed download any type of file in Magento 2. $content['rm'] = 1; // if you add 1 then it will be delete from server after being download, otherwise add 0. In the above code, we add one file to our Magento 2 file system at path <magetno root>/pub/media/catalog/attachments/file/test. pdf.
Accessing Files in MagentoGo to the Content section of Magento and click “Pages.” From this screen, you can access some of the more important pages of your website. These will include the home page, the 404 error page and other pertinent content you create for your visitors.
From the Backend, you select Product > Catalog > Product Attachments > Manage Files. Click on the Add New button on the upper right of the screen to upload a PDF file.
What about use Magento code ? ... _prepareDownloadResponse()
public function downloadAction()
{
$filename = '';
if($customer_data){
$filename = $customer_data->getFileuploadname();
}
$filepath = Mage::getBaseDir('base').'/uploads/'.$filename;
if ($filename) {
try {
$this->_prepareDownloadResponse($filename, array('type' => 'filename', 'value' => $filepath));
} catch (Exception $e) {
$this->_getSession()->addError($e->getMessage());
}
} else {
$this->_getSession()->addError($filepath . ' not found');
$this->_redirect('adminhtml/cache');
return;
}
}
This is the solution for this type of problems:
public function downloadAction() {
$entityid = $this->getRequest()->getParam('entity_id');
$customer_data = Mage::getModel('customer/customer')->load($entityid);
$filename = '';
if($customer_data){
$filename = $customer_data->getFileuploadname();
}
$filepath = Mage::getBaseDir('base').'/uploads/'.$filename;
if (! is_file ( $filepath ) || ! is_readable ( $filepath )) {
throw new Exception ( );
}
$this->getResponse ()
->setHttpResponseCode ( 200 )
->setHeader ( 'Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true )
->setHeader ( 'Pragma', 'public', true )
->setHeader ( 'Content-type', 'application/force-download' )
->setHeader ( 'Content-Length', filesize($filepath) )
->setHeader ('Content-Disposition', 'attachment' . '; filename=' . basename($filepath) );
$this->getResponse ()->clearBody ();
$this->getResponse ()->sendHeaders ();
readfile ( $filepath );
exit;
}
The problem based on the file path issues.....now its solved....
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With