我必须允许用户在提交他的用户数据后下载。
我创建了三个页面,
将显示可供下载的文件(catalogue_downloads.html)
将接收USER数据(form_collecting.php)
将获取用户数据验证,将其发送到电子邮件地址并重定向到下载页面(mail.php)
架构是如此catalogue_downloads.html-> form_collecting.php-> mail.php-> catalogue_downloads.html
我可以重定向到catalogue_downloads,但是如何让用户通过PHP下载他请求的文件
谢谢
此致
Vinoth
答案 0 :(得分:0)
http://php.net/manual/en/function.readfile.php阅读第一部分(强制下载),您可以读取文件,然后通过标题将其发送给用户。因此,您不必放弃您的文件结构(甚至可能将文件放在您网站的root / public_html之外)。
答案 1 :(得分:0)
您无法为用户提供多个文件,因此除非您在单个存档中压缩服务器端,否则必须向他显示文件的链接。
但是,您不限于指向实际文件的链接,您可以链接到“下载页面”,该页面在调用时向用户提供单个文件,以便未经授权的用户无法访问这些文件(请参阅PENDO的答案)该怎么做)。
答案 2 :(得分:0)
如果需要,您可以在代码下方使用..
$root = $_SERVER['DOCUMENT_ROOT']; $site = '';
$folder = "path where you want to store downloaded files";
$fullPath = $root.$folder.'/'.$_REQUEST['filenm'];
//$_REQUEST['filenm'] = file name which you want to download.
if ($fd = fopen ($fullPath, "r")) {
$fsize = filesize($fullPath);
$path_parts = pathinfo($fullPath);
$ext = strtolower(html);
header("Content-type: application/".$ext);
header("Content-Transfer-Encoding: Binary");
header("Content-Disposition: attachment;filename=\"".$path_parts["basename"]."\"");
header("Content-length: $fsize");
header("Cache-control: private"); //use this to open files directly
while(!feof($fd)) {
$buffer = fread($fd, 2048);
echo $buffer;
} } fclose ($fd); exit;
感谢。
答案 3 :(得分:0)
这是交易:
从catalogue_downloads.html重定向到form_collecting.php时,请为您的目录指定一个唯一ID并将其发布到form_collecting.php。在表单中保留一个隐藏的输入字段,该字段将保留以前发布的目录ID。当表单发布并验证时,启动mail.php的过程。邮件成功后,请阅读目录ID并将用户重定向到catalogue_downloads.html。
希望这会帮助你。 此致