Vueのaxios力PDFのダウンロードコンテンツなし

user001232:

私はいくつかのpdfファイルは私のウェブサイトに表示され、私はそれが自動的に新しいウィンドウで開くのではなく、ダウンロードします]をクリックしますならば、私はその機能を作成しました。私はそれをダウンロードすることができますが、問題は、私はそれを開くと、それが空であるが、私はメモ帳などの別のエディタで開きます。このようなテキストを得ました

�o�w��v�����%l&��䰱�L'ā5���

私はこれについて何をすべき?私は、ファイルを右にダウンロードしましたか?データは暗号化されたようです。どのように私はそれとショーがPDFで解読するだろうか?

ここに私のaxios関数であります

 downloadWithAxios(file){
               axios.get(encodeURI(file.url,{
                   method: 'GET',
                   mode: 'no-cors',
                   responseType: 'blob',
                   headers: {
                        'Access-Control-Allow-Origin': '*',
                        'Content-Type': 'application/pdf',
                      },
               }))
                .then((response)=>{
                    console.log(response.data)
                      const url = window.URL.createObjectURL(new Blob([response.data]));
                        const link = document.createElement('a');
                        link.href = url;
                        link.setAttribute('download', 'file.pdf');
                        document.body.appendChild(link);
                        link.click();
                })
           }
ヴィンス:

あなたは、実際にファイルをダウンロードしたが、私はあなたがそれをデコードする必要がなければならないと思います。実際には、実行することにより、バックエンドのアプローチを試すことができます

axios URLルートを呼び出すと、コントローラを指しを行います

  downloadFromController(file){
               let params = {url : file.url}
               console.log(params);
               axios.get('/generateFile?params='+file.url)
                .then(()=>{
                   window.location.assign('/generateFile?params=' +file.url); //prevent from redirecting to pdf url
                })
           }

お使いのコントローラを指してあなたのルート: Route::get('/generateFile{params?}','YourController@downloadFile');

そして、あなたのコントローラでのような関数を定義します

    public function downloadFile(Request $request){

        $url = $request->params; //pass the url params from your axios
        $name = 'file.pdf'; //your file name


        $temp = tempnam(sys_get_temp_dir(), $name);
          copy($url, $temp);  //use copy() then send it to user in the response

        return response()->download($temp,$name);
    }

これは、新しいウィンドウを開きません。あなたのPDFファイルのリンクをクリックした場合には、自動的にダウンロードされます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=30725&siteId=1
おすすめ