我從服務器下載時遇到麻煩。如果我輸入到http://mypage.com不能下載一些.zip文件。但是如果我輸入到該頁面的IP,我下載了這些文件。無法下載文件
我遇到的其他類似問題是與Godaddy,即使我使用IP或域訪問,也無法使我的zip下載。
這是代碼生成XML的一部分,它ZIP:
**xmlzip.php**
$xmlfile = $rfc.$year.$month.'BN.xml';
$xml->formatOutput = true;
$el_xml = $xml->saveXML();
$xml->save($xmlfile);
$filename = $rfc.$year.$month.'BN';
shell_exec('zip ../'.$filename.' '.$xmlfile);
try {
$date= date('Ymd_Hi');
$data = '{
"filename":"xml'.$date.'.zip",
"filename2":"'.$filename.'.zip"
}';
echo '{"success":1,"message":"ok","data":['.$data.']}';
} catch (Exception $e) {
$data = '';
echo '{"error":1,"message":"error","data":['.$data.']}';
die();
}
然後我得到這個在ExtJS的創建Messagebox.wait:
**downloadzip button**
msg = Ext.MessageBox.wait('Generating XML ...', '');
Ext.Ajax.request({
url: 'cakephp/app/webroot/xml.php?',
params:{
rfc: rfc,
month: month,
year: year
},
method : "POST",
headers: {
'Content-Type': 'application/json'
},
jsonData: true,
timeout: 1000000,
withCredentials: true,
success : function(response) {
var jsonResponse = JSON.parse(response.responseText);
filename = jsonResponse.data[0].filename;
filename2 = jsonResponse.data[0].filename2;
if(jsonResponse.success === 1) {
msg.hide();
Ext.getCmp("winFormXML_XMLpanel").setHtml(
'<iframe id="" name=""'+
' src="cakephp/app/webroot/download_xml.php?filename='+
filename+'&filename2='+filename2+'" width="100%" height="100%"></iframe>');
Ext.getCmp('winFormXML').destroy();
} else {
msg.hide();
Ext.Msg.alert("ERROR","Error generating XML.");
}
},
failure : function(response) {
msg.hide();
var respObj = Ext.JSON.decode(response.responseText);
console.log(respObj);
Ext.Msg.alert("ERROR", respObj.status.statusMessage);
}
});
而與此我下載生成的文件:
**downloadzip.php**
try {
$filename = $_REQUEST['filename'];
$filename2 = $_REQUEST['filename2'];
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$filename2);
header('Content-Length: ' . filesize($filename2));
readfile($filename2);
} catch(Exception $ex) {
echo $ex-getMessage();
}
正如我前面提到的,我知道它的作品,因爲我可以FR下載其他計算機,但通過IP,而不是來自域。
編輯:
看來,線Ext.getCmp('winFormXML').destroy();
生成時被給予的煩惱。刪除該行使它的工作!
希望我沒有錯,但一般來說,如果您在使用IP地址時解決了URL問題,可能是[DNS](https:// en。 wikipedia.org/wiki/Domain_Name_System#Function)或[hosts文件](https://en.wikipedia.org/wiki/Hosts_(file)#Purpose)。嘗試打開命令提示符pt命令並ping URL mypage.com,如果在命令結果/輸出中沒有看到正確的IP地址,請嘗試檢查您的DNS或主機文件。另一件事,不要在你的cakephp webroot文件夾中啓動php腳本,這是一個安全問題/違規。 – Benfarhat
upvote cuz你是答案。謝謝!首先,ping到mypage.com及其正確的IP。我檢測到的其他問題是,當我點擊downloadxml按鈕時,我的downloadzip.php以兩種方式都會變紅(錯誤/警告),我的意思是當下載在網絡選項卡中工作時.Request標題顯示:'Upgrade-Insecure -REQUESTS:1'。沒有預覽或迴應。在計時被暫停在21.00毫秒。有任何想法嗎? :(。順便說一句,最好的路徑把PHP腳本? –