AMcoder - javascript, python, java, html, php, sql

Հնարավոր չէ ներբեռնել ֆայլը s3-ից՝ օգտագործելով return response()-›download($file);

Ես ֆայլեր եմ վերբեռնումs3 հասցեում: Ես ուզում եմ, որ այն ապահով կերպով ներբեռնվի՝ օգտագործելով իմ կարգավորիչի հետևյալ կոդը, բայց այն չի աշխատում:

Ես օգտագործում եմ Laravel 5.5-ը, և ֆայլերի տեսանելիությունը հրապարակային չէ s3-ում:

if( Storage::disk('s3')->exists($file_path) ) {
      $file =  Storage::disk('s3')->get($file_path);
      return response()->download($file);
}

abort(404, 'File not found.');

Դա ինձ տալիս է այս սխալը

is_file() expects parameter 1 to be a valid path, string given
...
/home/vagrant/spark-etr/vendor/symfony/http-foundation/File/File.php:36
#1 /home/vagrant/spark-etr/vendor/symfony/http-foundation/File/File.php(36): is_file('\\xFF\\xD8\\xFF\\xE0\\x00\\x10JFIF\\x00\\x01\\x01\\x00\\x00...')
#2 /home/vagrant/spark-etr/vendor/symfony/http-foundation/BinaryFileResponse.php(94): Symfony\\Component\\HttpFoundation\\File\\File->__construct('\\xFF\\xD8\\xFF\\xE0\\x00\\x10JFIF\\x00\\x01\\x01\\x00\\x00...')
#3 /home/vagrant/spark-etr/vendor/symfony/http-foundation/BinaryFileResponse.php(53): Symfony\\Component\\HttpFoundation\\BinaryFileResponse->setFile('\\xFF\\xD8\\xFF\\xE0\\x00\\x10JFIF\\x00\\x01\\x01\\x00\\x00...', 'attachment', false, true)
#4 /home/vagrant/spark-etr/vendor/laravel/framework/src/Illuminate/Routing/ResponseFactory.php(125): Symfony\\Component\\HttpFoundation\\BinaryFileResponse->__construct('\\xFF\\xD8\\xFF\\xE0\\x00\\x10JFIF\\x00\\x01\\x01\\x00\\x00...', 200, Array, true, 'attachment')

Ֆայլը s3-ում է, քանի որ ներբեռնումից առաջ ես ստուգում եմ գոյությունը:

Թարմացնել

$file var-ը թափելը ինձ տալիս է երկուական այսպիսին

մուտքագրեք պատկերի նկարագրությունը այստեղ

Խնդրում ենք օգնել

16.10.2017

  • Ի՞նչ եք ստանում, երբ զանգում եք dd($file); 16.10.2017
  • այն ինձ երկուական տվյալներ է տալիս, կարծես ինքնին ֆայլ լինի 16.10.2017
  • ո՞րն է file-ի բովանդակության տեսակը: 16.10.2017

Պատասխանները:


1

Փորձիր

if( Storage::disk('s3')->exists($file_path) ) {
      $file =  Storage::disk('s3')->get($file_path);

      $headers = [
        'Content-Type' => 'your_content_type', 
        'Content-Description' => 'File Transfer',
        'Content-Disposition' => "attachment; filename={$yourFileName}",
        'filename'=> $yourFileName
     ];

    return response($file, 200, $headers);
}

Թարմացնել

Դուք կարող եք ավելին կարդալ large ֆայլեր ներբեռնելու մասին Ինչու մեծ ֆայլերը հեշտությամբ չեն ներբեռնվում Լարավելո՞ւմ:

16.10.2017
  • սա աշխատում է, բայց ֆայլի չափը կարող է հասնել մինչև 100 մբ կամ ավելի, արդյոք դա արդյունավետ կլինի: Ես վախենում եմ, որ դա կտա PHP Fatal error: Allowed memory size of 5242880 bytes exhausted 16.10.2017
  • Վստահ չեմ, որ երբևէ դա կտեսնես :) 16.10.2017
  • @Saqueib ես տեղադրել եմ հղում, որը կօգնի ձեզ large ֆայլերի հարցում 16.10.2017
  • Ձեզ նույնպես պետք չէ ներառել Content-Length: 10.09.2019

  • 2

    Կառուցեք պատասխանը ինքներդ.

        $file = ''; // what you got from S3
        $mimeType = 'text/plain'; // or whatever the mime type is
        $fileName = 'example.txt';
    
        $headers = [
            'Content-type'        => $mimeType,
            'Content-Disposition' => 'attachment; filename="' . $fileName . '"',
            'Content-Length'      => sizeof($file),
        ];
    
        return response($file, 200, $headers);
    

    ... կամ հետազոտություն, թե ինչպես ներբեռնել հոսքերը:

    16.10.2017
    Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..