在服务器目录上保存PDF Curl响应

时间:2019-01-25 13:02:37

标签: php api pdf curl server-side

我正在从URL获取并下载.pdf。它通过Curl请求直接下载到我的PC上。  如何将其保存在运行页面的服务器上的目录中?

我能够使用PHP和JS,我已经尝试了很多方法,甚至结合了两种语言,但似乎只能满足curl请求,并且不会将其保存在目录中

<body>
    <button id="boton">CLICK ME</button>
        <?php
    $name = 'file'; 
    $file_downloaded = curl_init(); 
    curl_setopt($file_downloaded, CURLOPT_URL, 'The url'); 
    //curl_setopt($file_downloaded, CURLOPT_HEADER, true);
    curl_setopt($file_downloaded, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($file_downloaded, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($file_downloaded, CURLOPT_AUTOREFERER, true);
    $file_downloaded = curl_exec($file_downloaded); 
    if(!curl_errno($file_downloaded)) 
    {
      header('Content-type:application/pdf'); 
      header('Content-Disposition: attachment; filename ="'.$nuevo_nombre.'.pdf"'); 
      echo($file_downloaded);
      exit();
    }else
    {
      echo(curl_error($file_downloaded)); 
    }
    ?>

    <script>
        $("#boton").click(function () { 
        var archivo = '<?php echo($file_downlaoded) ?>';
        var data = new FormData();
        data.append("data" , archivo);
        var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
        xhr.open( 'post', '/my/directory', true );
        xhr.send(data);
    });

    </script>
</body>

它正在我的本地PC上下载,并且有望在服务器的/ my /目录路径上下载。

编辑

        <?php
    $nuevo_nombre = 'remito'; //asignamos nuevo nombre
    $archivo_descarga = curl_init(); //inicializamos el curl
    curl_setopt($archivo_descarga, CURLOPT_URL, 'URL'); 
    //curl_setopt($archivo_descarga, CURLOPT_HEADER, true);
    curl_setopt($archivo_descarga, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($archivo_descarga, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($archivo_descarga, CURLOPT_AUTOREFERER, true);
    $resultado_descarga = curl_exec($archivo_descarga); 
    file_put_contents('/path/to/file.pdf', $resultado_descarga);
?>

1 个答案:

答案 0 :(得分:0)

通过file_put_contents()函数解决了该问题,并且目录文件夹的权限也有问题。

function Download($endpoint) {
        $URL = 'URL';
        $fileName= 'name1';
        $path = 'testDirectory/'.$filename.'.pdf';
        $file_download= curl_init();

        curl_setopt($file__download, CURLOPT_URL, $URL.$endpoint);
        curl_setopt($file__download, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($file__download, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($file__download, CURLOPT_AUTOREFERER, true);
        $result= curl_exec($file__download);
        file_put_contents($path, $result);
}