Magento2 ফাইল ডাউনলোড ক্রিয়া


11

এমন কি ম্যাজেন্টো ইউটিলিটি পদ্ধতি উপলব্ধ আছে যা আমাকে জোর করে সামগ্রী ডাউনলোডের ক্রিয়া তৈরি করতে সহায়তা করতে পারে?


1
কোন ধরণের ফাইলের এক্সটেনশানটি আপনার জোর করে ডাউনলোড করতে হবে?
ফায়াজ খট্টক

উত্তর:


19

আপনি \Magento\Backend\App\Actionব্যাকএন্ড বা \Magento\Framework\App\Action\Actionসীমান্তের জন্য প্রসারিত করে আপনার নিয়ামক ক্রিয়া তৈরি করতে পারেন ।
এবং এটি দেখতে দেখতে:

<?php 
namespace Your\Namespace\Here;

class ClassName extends \Magento\Backend\App\Action 
{
    public function __construct(
        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory,
        \Magento\Framework\App\Response\Http\FileFactory $fileFactory,
        \Magento\Backend\App\Action\Context $context
    ) {
        $this->resultRawFactory      = $resultRawFactory;
        $this->fileFactory           = $fileFactory;
        parent::__construct($context);
    }
    public function execute()
    {
        //do your custom stuff here
        $fileName = 'file name for download here';
        $this->fileFactory->create(
            $fileName,
            null, //content here. it can be null and set later 
            base dir of the file to download here
            'application/octet-stream', //content type here
            content lenght here...can be null
        );
        $resultRaw = $this->resultRawFactory->create();
        $resultRaw->setContents(contents of file here); //set content for download file here
        return $resultRaw;
    }
}

কীভাবে নালাগুলিতে সামগ্রী পাস করতে হবে, উপরোক্ত পদ্ধতিটি ব্যবহার করার সময় পাসিন এর ধরণ এবং ফাংশন ত্রুটি ব্যবহার করে আমার কাছে অ্যারের ডেটা থাকে।
রাকেশ জেসাদিয়া

3
$this->fileFactory->create()এটি ইতিমধ্যে প্রতিক্রিয়া বাস্তবায়ন হওয়ায় আপনি সরাসরি ফলাফলটি ফিরিয়ে দিতে পারবেন , কোনও প্রয়োজন নেই$resultRaw
ফ্যাবিয়ান শেমংলার

@fschmengler আপনি সম্ভবত সঠিক, তবে আমি ব্যাকআপ ডাউনলোড ক্রিয়া থেকে এই উদাহরণটি কোর থেকে গ্রহণ করেছি ।
মারিয়াস

1
বেশিরভাগ এম 2 কোর মডিউলগুলি একটি খারাপ উদাহরণ;)
ফ্যাবিয়ান শেমংলার

হ্যাঁ হ্যাঁ আমি আলোচনা জানি। আমি আসলে মনে করি আমি এটির কিছু অংশ শুরু করেছি। তবে এটি সর্বদা সত্য নয়
মারিয়াস

8

এছাড়াও আপনি যে ফাইলটি ডাউনলোড করতে চান তার জন্য একটি পথ প্রদান করতে পারে:

//Send file for download
//@see Magento\Framework\App\Response\Http\FileFactory::create()
return $this->_fileFactory->create(
    //File name you would like to download it by
    $filename,
    [
        'type'  => "filename", //type has to be "filename"
        'value' => "folder/{$filename}", // path will append to the
                                         // base dir
        'rm'    => true, // add this only if you would like the file to be
                         // deleted after being downloaded from server
    ],
    \Magento\Framework\App\Filesystem\DirectoryList::MEDIA
);

2

মারিয়াস যে উত্তর দিয়েছে তার ভিত্তিতে।

class Download extends \Magento\Framework\App\Action\Action
{
    protected $resultRawFactory;
    protected $fileFactory;

    public function __construct(
        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory,
        \Magento\Framework\App\Response\Http\FileFactory $fileFactory,
        \Magento\Backend\App\Action\Context $context
    ) {
        $this->resultRawFactory      = $resultRawFactory;
        $this->fileFactory           = $fileFactory;
        parent::__construct($context);
    }
    public function execute()
    {
        try{
            $fileName = 'FileName'; // the name of the downloaded resource
            $this->fileFactory->create(
                $fileName,
                [
                    'type' => 'filename',
                    'value' => 'relative/path/to/file/from/basedir'
                ],
                DirectoryList::MEDIA , //basedir
                'application/octet-stream',
                '' // content length will be dynamically calculated
            );
        }catch (\Exception $exception){
            // Add your own failure logic here
            var_dump($exception->getMessage());
            exit;
        }
        $resultRaw = $this->resultRawFactory->create();
        return $resultRaw;
    }
}

সঠিক অনুমতি না থাকা (যদিও এখানে পঠনের প্রয়োজন পড়ার জন্য ম্যাগন্টো লেখার অনুমতিগুলির জন্য চেক করে) একটি অদ্ভুত ত্রুটির ফলস্বরূপ। "সাইটটি নীচে বা সরানো হয়েছে" বা স্মিথ।

$ ফাইল ফ্যাক্টরি-> তৈরি () তৈরির ভিতরে যুক্তিটির দিকে ঝুঁকিপূর্ণ শিখর গ্রহণ করাও মূল্যবান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.