Php 从url下载文件作为附件

Php 从url下载文件作为附件,php,attachment,force-download,Php,Attachment,Force Download,我无法设置从URL下载文件的正确标题。 下面的代码只是在浏览器中显示URL的内容,而不是下载 $file_name = "image1.jpg"; $content_type = "image/jpeg"; $url = "http://ctan.imsc.res.in/macros/latex/contrib/incgraph/example.jpg"; header('Pragma: public'); // required header('Expires: 0'); /

我无法设置从URL下载文件的正确标题。 下面的代码只是在浏览器中显示URL的内容,而不是下载

$file_name = "image1.jpg";
$content_type = "image/jpeg";
$url = "http://ctan.imsc.res.in/macros/latex/contrib/incgraph/example.jpg";

header('Pragma: public');   // required
header('Expires: 0');       // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($file_name)).' GMT');
header('Cache-Control: private',false);
header("Content-type: ".$content_type);
header("Cache-Control: no-store, no-cache");
header("Content-disposition: attachment; filename=".$file_name);
header("Location: ".$url);
exit(0);

提前感谢。

此代码可以从url下载:
$originalPath = $_REQUEST['path'];  //path with filename
$fileName = $_REQUEST['fileName'];  // filename for downloaded file name    
if (file_exists($originalPath)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($fileName));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($originalPath));
    ob_clean();
    flush();
    readfile($originalPath);
    exit;
} else {
    echo 'FILE_NOT_FOUND';
}
set_time_limit(0);

//File to save the contents to
$fp = fopen ('file.type', 'w+');

$url = "http://yoursite.come/file.type";

//Here is the file we are downloading, replace spaces with %20
$ch = curl_init(str_replace(" ","%20",$url));

curl_setopt($ch, CURLOPT_TIMEOUT, 50);

//give curl the file pointer so that it can write to it
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$data = curl_exec($ch);//get curl response

//done
curl_close($ch);
?>

使用此代码,您可以在我们的服务器上保存图像,并可以使用我的上层代码下载图像

file_put_contents("Tmpfile.jpg", fopen("http://ctan.imsc.res.in/macros/latex/contrib/incgraph/example.jpg", 'r'));

从url(列表中)下载文件,并使用python使用url的姓氏保存文件

import urllib.request as urllib2
import re,os
for url in open('C:\\Users\\SRINU\\Desktop\\Election_pdfs_urls\\33.txt'):
  possible_urls = re.findall(r'(https?://[^\s]+)', url)
  for links in possible_urls:
    response = urllib2.urlopen(links.format(url.encode('utf-8')))
    filename_w_ext = os.path.basename(links)
    file = open(filename_w_ext, 'wb')
    file.write(response.read())
    file.close()

您需要获取
example.jpg
的内容并将其传递到浏览器<代码>位置:标题将直接重定向用户。感谢@BenM的回复。但我不必在我的服务器上下载图像。@GuruGGulab-你错了。若你们想给它添加你们自己的HTTP头,你们可以这样做。我需要直接从URL下载文件,而不是显示在浏览器中。如果我的代码是错误的,那么请建议我另一种解决方案。我的要求是允许用户下载外部URL文件,而不是在浏览器中显示。上述代码将在我的服务器上下载文件,我不必将文件下载到我的服务器空间。我必须把那个文件直接交给用户下载到他/她的个人电脑/笔记本电脑上。我只有URL,并没有文件的绝对路径。我必须使用URL而不是文件的实际位置。URL是外部源,不是来自我的服务器,我没有该文件的实际路径。