我从服务器下载时遇到麻烦。如果我输入到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脚本? –