href image link download on click

后端 未结 10 1805
失恋的感觉
失恋的感觉 2020-11-22 07:56

I generate normal links like: in a web app.

When I click on the link, it

相关标签:
10条回答
  • 2020-11-22 08:26

    No, it isn't. You will need something on the server to send a Content-Disposition header to set the file as an attachment instead of being inline. You could do this with plain Apache configuration though.

    I've found an example of doing it using mod_rewrite, although I know there is a simpler way.

    0 讨论(0)
  • 2020-11-22 08:32

    You can't do it with pure html/javascript. This is because you have a seperate connection to the webserver to retrieve a separate file (the image) and a normal webserver will serve the file with content headers set so that the browser reading the content type will decide that the type can be handled internally.

    The way to force the browser not to handle the file internally is to change the headers (content-disposition prefereably, or content-type) so the browser will not try to handle the file internally. You can either do this by writing a script on the webserver that dynamically sets the headers (i.e. download.php) or by configuring the webserver to return different headers for the file you want to download. You can do this on a per-directory basis on the webserver, which would allow you to get away without writing any php or javascript - simply have all your download images in that one location.

    0 讨论(0)
  • 2020-11-22 08:34

    The easiest way of creating download link for image or html is setting download attribute, but this solution works in modern browsers only.

    <a href="/path/to/image" download="myimage"><img src="/path/to/image" /></a>
    

    "myimage" is a name of file to download. Extension will be added automatically Example here

    0 讨论(0)
  • 2020-11-22 08:34
    <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');
    
    }
    ?>
    
    0 讨论(0)
  • 2020-11-22 08:35

    Try this...

    <a href="/path/to/image" download>
        <img src="/path/to/image" />
     </a>
    
    0 讨论(0)
  • 2020-11-22 08:41

    HTML download attribute to specify that the target will be downloaded when a user clicks on the hyperlink.

    This attribute is only used if the href attribute is set.

    The value of the attribute will be the name of the downloaded file. There are no restrictions on allowed values, and the browser will automatically detect the correct file extension and add it to the file (.img, .pdf, .txt, .html, etc.).

    Example code:

    <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>
    

    Output:

    Download Image >>

    Html5 download or chrome

    Download Image >>

    0 讨论(0)
提交回复
热议问题