Phtml file code Sample
<div class="image image-placeholder" style="overflow: hidden;">
<div class="uploader">
<div class="fileinput-button form-buttons button">
<span>Browse Files...</span>
<input id="file" name="file" type="file">
</div>
</div>
<div class="product-image-wrapper">
<p class="image-placeholder-text">
Browse to find or drag csv file here
</p>
</div>
</div>
<script type="text/x-magento-init">
{
"*": {
"NameSpace_ModuleName/js/uploadCsv": {
"uploadUrl": "<?php echo $this->getUploadAjaxUrl() ?>"
}
}
}
</script>
Js file code Sampledefine
(
[
'jquery'
],
function($)
{
'use strict';
return function (config)
{
jQuery('#file').change(function()
{
var formdata = new FormData();
if(jQuery(this).prop('files').length > 0)
{
file =jQuery(this).prop('files')[0];
formdata.append("file", file);
jQuery.ajax({
url: config.uploadInventoryUrl,
type: "POST",
data: formdata,
showLoader: true,
contentType: false,
processData: false,
success: function (result) {
}
});
}
});
};
}
);
Controller sample File Codenamespace NameSpace\ModuleName\Controller\Adminhtml\Ajax;
use Magento\Backend\App\Action;
use Magento\Backend\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
use Magento\Framework\Exception\LocalizedException;
use NameSpace\ModuleName\Model\CsvUploadProductsHandler;
class UploadCsv extends Action
{
protected $helper;
protected $resultPageFactory;
protected $csvProcessor;
protected $uploadProductsHandler;
protected $backendSession;
public function __construct(
Context $context,
PageFactory $resultPageFactory,
\Magento\Framework\File\Csv $csvProcessor,
\NameSpace\ModuleName\Helper\Reservation $helper,
CsvUploadProductsHandler $uploadProductsHandler,
\Magento\Backend\Model\Session $backendSession
)
{
$this->csvProcessor = $csvProcessor;
parent::__construct($context);
$this->resultPageFactory = $resultPageFactory;
$this->helper = $helper;
$this->uploadProductsHandler = $uploadProductsHandler;
$this->backendSession = $backendSession;
}
public function execute()
{
$saleId = $this->getRequest()->getParam('saleId');
if(isset($_FILES['file']['name']) and (file_exists($_FILES['file']['tmp_name'])) )
{
$uploader = $this->uploaderFactory->create(['fileId' => $this->fileId])
->setAllowCreateFolders(true)
->setAllowedExtensions($this->allowedExtensions)
->addValidateCallback('validate', $this, 'validateFile');
$name = time() . '_' . str_replace(' ', '_', $_FILES['file']['name']);
$responce = $uploader->save($destinationPath,$name);
$dataComplete = $this->csvProcessor->getData($filePath);
}
else
{
throw new \Magento\Framework\Exception\LocalizedException(__('Invalid file upload attempt.'));
}
}
}
Thanks for sharing, I am getting error when i try to upload "Invalid Form Key. Please refresh the page." Please let me know what i have to do.
ReplyDelete