웹 사이트의 클릭 기능에 다운로드 이미지를 추가하려고합니다. 내가 알고있는 한 PHP를 사용하려고 시도하고 있는데, 다른 빈 페이지로 연결하지 않고 HTML로 처리 할 방법이 없다. 그런 다음 다른 이름으로 저장을 클릭하면된다. 이 코드를 여기에서 찾아서 적용하고 싶지만, PHP에 대한 내 이해가 광대하지 않기 때문에이 코드를 깨뜨리는 것에 관심이 있습니다. 또한 여러 파일에서이 코드를 사용해야하지만, PHP에서 사용하는 PHP 파일은 하나의 파일에서만 사용할 수 있습니다. 즉, 각 이미지 다운로드마다 하나씩 많은 PHP 파일이 필요할 수 있습니다.이미지를 클릭하면 다운로드 - PHP를 사용하여
어쨌든, 확실하지 않지만 누구든지 나를 도와 줄 수 있다면 코드를 수정하는 데 도움이 될 수 있습니까? 이미지는 사이트의 다음 디렉토리에 있습니다. /img/bkg/img1.jpg 이것은 img2-5에도 이어집니다. 여기
<a href="download.php?file=path/<?=$row['img1.jpg']?>">
<img src="img/bkg/img1.jpg" alt="CWP - Wallpaper 1" width="1056" height="600"/>
</a>
나는 이러한 파일과 올바른 디렉토리에 적응하는 데 필요한 코드 :
어쨌든
, 여기에 PHP 파일 다운로드 이미지와 링크를 보여 주 파일에 사용되는 코드입니다 : 위에서 바보 같은 질문 인 경우
<?php
$file = $_GET['file'];
download_file($file);
function download_file($fullPath){
// Must be fresh start
if(headers_sent())
die('Headers Sent');
// Required for some browsers
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
// File Exists?
if(file_exists($fullPath)){
// Parse Info/Get Extension
$fsize = filesize($fullPath);
$path_parts = pathinfo($fullPath);
$ext = strtolower($path_parts["extension"]);
// Determine Content Type
switch ($ext) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($fullPath)."\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$fsize);
ob_clean();
flush();
readfile($fullPath);
} else
die('File Not Found');
}
?>
내가 미안 해요,하지만 난 오히려 그것을 통해 휴식보다는이의 도움을 요청합니다. 나는 내가 파일과 디렉토리 등을 대체하고있는 곳이 확실하지 않고 그것을 올바르게하고 싶다.
도움을 주시면 감사하겠습니다.
파일 이름이 쿼리 문자열에 전달되며 각 링크의 파일 이름을 변경하면 정상적으로 작동합니까? – adeneo
직접 해보거나 스크립트가하는 일을 적어도 이해해야합니다. 예를 들어, 입력 유효성 검사없이 누군가가 서버에'download.php? file = ../../../ etc/passwd' 큰 문제가있을 수 있습니다. – jeroen
질문에 대해 한 번의 클릭으로 여러 파일을 다운로드 하시겠습니까, 아니면 한 페이지에 여러 번 다운로드 할 수 있습니까? – jeroen