-4

ここや他の多くのサイト全体を検索しましたが、このようなよく知られている問題の解決策が見つかりません。PHP の readfile で Excel ファイルをダウンロードするプロンプトが表示されません。fopen、print(fread)、fclose の組み合わせも試しましたが、どちらも機能しません。リクエスト URL は https です。http のときにプロンプ​​トが表示されました。

 $path=$_SERVER['DOCUMENT_ROOT'].'/uploads/'.$legit;  
 header('Content-Description: File Transfer');  
 header('Content-Transfer-Encoding: binary');
 header('Accept-Ranges: bytes'); 
 header("Content-Disposition: attachment; filename='file.xls'");                                                       
 header('Content-Type: application/vnd.ms-excel');
 header('Content-Length: ' . filesize(\$path));
 header('Cache-Control: must-revalidate');
 header('Pragma: public');
 header('Expires: 0');
 ob_clean();
 readfile($path);
 exit;
  /*   IF ($file = FOPEN($path, 'rb')) {
   WHILE(!FEOF($file) and (CONNECTION_STATUS()==0)) {
     PRINT(FREAD($file, 1024*8));
 FLUSH();
     }
   FCLOSE($file);
    }
  RETURN((CONNECTION_STATUS()==0) and !CONNECTION_ABORTED());
   exit;
       }    */

リクエスト、レスポンス ヘッダーはすべて firebug で正常に表示されますが、プロンプトは表示されません。

私のクライアント ヘッダーは dojo/request API で送信されます。

  var args={
             headers :{
                        'Content-Type' :'application/x-www-form-urlencoded',
                        'Accept' :'application/vnd.ms-excel',
                        'X-Requested-With':'XMLHttpRequest'
                            },
                            method:'GET',
                            timeout:10000
                        }
   var deferred=request.get(url,args);//the url is https it worked with http

これを解決するための助けはありますか?

4

1 に答える 1

0

AJAX 要求を使用してデータを要求すると、応答はバックグラウンドで透過的に AJAX プロセスに返されます。ファイル ダウンロード プロセスを開始するには、現在のページのメイン URL をファイル ダウンロード URL にリダイレクトする必要があります。

于 2012-10-15T09:16:15.303 に答える