0

これはコントローラ関数の呼び出しです:

function downloadFile(fn,con)
        {
            var loadUrl = "/Fast-Docs/index.php/Docs/downloadFile";
                alert('hi');
        $.post(  
            loadUrl,  
            {content: con, filename: fn});  
        }

コントローラ機能:

public function downloadFile()
{
    $this->load->helper('download');
    $content=$this->input->post('content');
    $fn=$this->input->post('filename');
    return force_download($fn,$content);
}

しかし、ファイルはダウンロードされていません。

機能しない理由はわかっていますが、修正方法はわかりません。それで解決策は何ですか。さらに情報が必要な場合は、お気軽にお問い合わせください。

4

1 に答える 1

0

私はあなたが何をしようとしているのか完全には理解していません。とにかく、あなたのコードには根本的な問題があります。

URLに対してajaxリクエストを"/Fast-Docs/index.php/Docs/downloadFile"実行していますが、レスポンスを無視しています。

私の提案は、ajaxを忘れて、簡単なリンクを使用することです。

<a href="/Fast-Docs/index.php/Docs/downloadFile/myfile.png">Download file</a>

次に、コントローラーで:

public function downloadFile($filename)
{
    //Validate file name
    if($filename != 'validFileName') die('Invalid file name');

    //Set headers
    $this->load->helper('download');
    $content = file_get_contents('/images/' . $filename);
    force_download($filename, $content);
}

何らかの理由でリンクを使用できない場合は、(を設定してwindow.location)ダウンロードページにリダイレクトできます。

本当にajaxを使用する必要がある場合は、これを見てください。

于 2012-12-14T19:51:48.130 に答える