Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图通过PHP通过XML请求下载imagefile_Javascript_Php_Xmlhttprequest - Fatal编程技术网

Javascript 试图通过PHP通过XML请求下载imagefile

Javascript 试图通过PHP通过XML请求下载imagefile,javascript,php,xmlhttprequest,Javascript,Php,Xmlhttprequest,我已经为这个问题挣扎了一段时间。 我试图通过javascript和PHP强制下载文件 如果我直接访问PHP页面,它可以工作,但我希望在另一个页面上开始下载,但没有成功 文件的URL取决于从选择项中获取的值,但是这部分工作与预期的一样,所以我不考虑它 Javascript var xmlHttp = new XMLHttpRequest(); xmlHttp.open("GET", postUrl, true); //postUrl = http://www.example.com/downloa

我已经为这个问题挣扎了一段时间。 我试图通过javascript和PHP强制下载文件

如果我直接访问PHP页面,它可以工作,但我希望在另一个页面上开始下载,但没有成功

文件的URL取决于从选择项中获取的值,但是这部分工作与预期的一样,所以我不考虑它

Javascript

var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", postUrl, true); //postUrl = http://www.example.com/downloadFile.php?url=http://www.example.com/files/test.eps

xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send();
var downloadLinkID = 'hiddenDownloadLink', downloadHref = document.getElementById(downloadLinkID);
    if (downloadHref === null) 
    {
        downloadHref = document.createElement('a');
        downloadHref.id = downloadLinkID;
        downloadHref.setAttribute('href', postUrl + params);
        downloadHref.setAttribute('onclick', firefoxDownload(postUrl + params)); // FF/IE must have onclick event to make link clickable
        downloadHref.click();

    }

    function firefoxDownload(url)
    {
        window.location.href = url; //Needed for FF/IE to force download of file

    }
PHP

我一直在测试GET和POST(不确定哪一个最好,请随意纠正我),但现在我正在努力让GET开始工作。 正如我所说,如果我直接访问“”,文件将被下载,如果我访问了
console.log(xmlHttp.responseText)
,文件内容将写入控制台,但从另一个页面发出请求时,文件不会被下载


任何帮助都将不胜感激。

事实证明我使用了@vivasayi发布的链接,不过我做了一点小小的改动。我没有使用Iframe,而是使用了常规的a href。PHP文件保持不变

Javascript

var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", postUrl, true); //postUrl = http://www.example.com/downloadFile.php?url=http://www.example.com/files/test.eps

xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send();
var downloadLinkID = 'hiddenDownloadLink', downloadHref = document.getElementById(downloadLinkID);
    if (downloadHref === null) 
    {
        downloadHref = document.createElement('a');
        downloadHref.id = downloadLinkID;
        downloadHref.setAttribute('href', postUrl + params);
        downloadHref.setAttribute('onclick', firefoxDownload(postUrl + params)); // FF/IE must have onclick event to make link clickable
        downloadHref.click();

    }

    function firefoxDownload(url)
    {
        window.location.href = url; //Needed for FF/IE to force download of file

    }

另一种方法。但这会解决你的问题。谢谢,我看过iframe的把戏,但觉得有点脏。但它似乎与我的eps文件一起工作。下载图像时出现问题,所以我想我必须使用MIME类型或其他什么?