<a href="https://stackoverflow.com/path/to/image"><img src="/path/to/image" /></a>
웹 앱에서 와 같은 일반 링크를 생성 합니다.
링크를 클릭하면 새 페이지에 사진이 표시됩니다. 사진을 저장하려면 사진을 마우스 오른쪽 버튼으로 클릭하고 “다른 이름으로 저장”을 선택해야합니다.
나는이 행동을 원하지 않는다. 링크를 클릭 할 때 다운로드 상자가 나타나기를 원한다 .html 또는 javascript로 가능합니까? 어떻게?
그렇지 않다면 download.php 스크립트를 작성하고 파일 이름을 매개 변수로 href로 호출해야한다고 생각합니까?
답변
<a download="custom-filename.jpg" href="/path/to/image" title="ImageName">
<img alt="ImageName" src="/path/to/image">
</a>
아직 완전히 지원되지는 않지만 http://caniuse.com/#feat=download 이지만 modernizr https://modernizr.com/download/?adownload-setclasses ( Non-core detects ) 와 함께 사용 하여 지원 여부를 확인할 수 있습니다 브라우저.
답변
이미지 또는 HTML에 대한 다운로드 링크를 작성하는 가장 쉬운 방법은 다운로드 속성을 설정하는 것이지만이 솔루션은 최신 브라우저에서만 작동합니다.
<a href="/path/to/image" download="myimage"><img src="/path/to/image" /></a>
“myimage”는 다운로드 할 파일의 이름입니다. 확장 프로그램이 자동으로 추가됩니다.
여기 예
답변
<a href="download.php?file=path/<?=$row['file_name']?>">Download</a>
download.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');
}
?>
답변
아닙니다. 파일을 인라인 대신 첨부 파일로 설정하기 위해 Content-Disposition 헤더를 보내려면 서버에 무언가가 필요합니다. 그러나 일반 Apache 구성 으로이 작업을 수행 할 수 있습니다.
더 간단한 방법이 있다는 것을 알고 있지만 mod_rewrite 사용하여 예제를 찾았 습니다.
답변
HTML5를 사용하는 경우 ‘다운로드’속성을 링크에 추가 할 수 있습니다.
<a href="/test.pdf" download>
http://www.w3schools.com/tags/att_a_download.asp
답변
이 시도…
<a href="/path/to/image" download>
<img src="/path/to/image" />
</a>
답변
사용자가 하이퍼 링크를 클릭 할 때 대상이 다운로드되도록 지정하는 HTML 다운로드 속성.
이 속성은 href 속성이 설정된 경우에만 사용됩니다.
속성 값은 다운로드 한 파일의 이름이됩니다. 허용되는 값에는 제한이 없으며 브라우저는 자동으로 올바른 파일 확장자를 감지하여 파일 (.img, .pdf, .txt, .html 등)에 추가합니다.
예제 코드 :
<a href="https://www.w3schools.com/images/myw3schoolsimage.jpg"> Download Image >></a>
HTML5 :
<a href="https://www.w3schools.com/images/myw3schoolsimage.jpg" download> Download Image >></a>
출력 :
HTML5 다운로드 또는 크롬