473,326 Members | 2,113 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,326 software developers and data experts.

Html href download file with a different name.

i have a directory with several files, each file with a encoded name, each letter/number in the file name means something, but the final user have to "learn" how to read the code to understand what is in the file and download the propper file, plese undestand me, the link to download the file could have the name decoded but what i need is to give the file to the user with the file name decoded so the final user have not to rename the file in a way he/she can understand it. is it possible to have a file named "abc.txt" and download it as "Actions Bonuses & Corrections.txt"? thanks for the help.
Feb 7 '14 #1
1 7519
omerbutt
638 512MB
hi gonzaloJr,
see below code for example you can use the anchor tag to download the file by specifying in this way

Expand|Select|Wrap|Line Numbers
  1. <a href='download.php?f=124521883213321313.pdf&fn=new-file-name.pdf'>Click here to download</a>
where the f is the original file name i.e in time stamp or any coded format and the fn is the new file name or the desired decoded name that you want , sve the following file and try this code

FILENAME download.php
Expand|Select|Wrap|Line Numbers
  1. <?php
  2. # Sample call (browser will try to save with new file name):
  3. #    download.php?f=phptutorial.zip&fc=php123tutorial.zip
  4. ###############################################################
  5.  
  6. // Allow direct file download (hotlinking)?
  7. // Empty - allow hotlinking
  8. // If set to nonempty value (Example: example.com) will only allow downloads when referrer contains this text
  9. define('ALLOWED_REFERRER', '');
  10.  
  11. // Download folder, i.e. folder where you keep all files for download.
  12. // MUST end with slash (i.e. "/" )
  13.  
  14. define('BASE_DIR','E:/xampp/htdocs/ews/vanguard/docs');
  15.  
  16. // log downloads?  true/false
  17. define('LOG_DOWNLOADS',true);
  18.  
  19. // log file name
  20. define('LOG_FILE','downloads.log');
  21.  
  22. // Allowed extensions list in format 'extension' => 'mime type'
  23. // If myme type is set to empty string then script will try to detect mime type 
  24. // itself, which would only work if you have Mimetype or Fileinfo extensions
  25. // installed on server.
  26. $allowed_ext = array (
  27.   // archives
  28.   // documents
  29.   'pdf' => 'application/pdf',
  30.   'doc' => 'application/msword',
  31.   'docx' => 'application/msword',
  32.   'ppt' => 'application/msword',
  33.   'pptx' => 'application/octet-stream',
  34.   'pptx' => 'application/octet-stream',
  35.   'wpd' => 'application/octet-stream',
  36.   'xls' => 'application/octet-stream',
  37.   'xlsx' => 'application/octet-stream'
  38. );
  39.  
  40.  
  41.  
  42. ####################################################################
  43. ###  DO NOT CHANGE BELOW
  44. ####################################################################
  45.  
  46. // If hotlinking not allowed then make hackers think there are some server problems
  47. if (ALLOWED_REFERRER !== ''
  48. && (!isset($_SERVER['HTTP_REFERER']) || strpos(strtoupper($_SERVER['HTTP_REFERER']),strtoupper(ALLOWED_REFERRER)) === false)
  49. ) {
  50.   die("Internal server error. Please contact system administrator.");
  51. }
  52.  
  53. // Make sure program execution doesn't time out
  54. // Set maximum script execution time in seconds (0 means no limit)
  55. set_time_limit(0);
  56.  
  57. if (!isset($_GET['f']) || empty($_GET['f'])) {
  58.   die("Please specify file name for download.");
  59. }
  60.  
  61. // Get real file name.
  62. // Remove any path info to avoid hacking by adding relative path, etc.
  63. $fname = basename($_GET['f']);
  64.  
  65. // Check if the file exists
  66. // Check in subfolders too
  67. function find_file ($dirname, $fname, &$file_path) {
  68.   $dir = opendir($dirname);
  69.  
  70.   while ($file = readdir($dir)) {
  71.     if (empty($file_path) && $file != '.' && $file != '..') {
  72.       if (is_dir($dirname.'/'.$file)) {
  73.         find_file($dirname.'/'.$file, $fname, $file_path);
  74.       }
  75.       else {
  76.         if (file_exists($dirname.'/'.$fname)) {
  77.           $file_path = $dirname.'/'.$fname;
  78.           return;
  79.         }
  80.       }
  81.     }
  82.   }
  83.  
  84. } // find_file
  85.  
  86. // get full file path (including subfolders)
  87. $file_path = '';
  88. find_file(BASE_DIR, $fname, $file_path);
  89.  
  90. if (!is_file($file_path)) {
  91.   die("File does not exist. Make sure you specified correct file name."); 
  92. }
  93.  
  94. // file size in bytes
  95. $fsize = filesize($file_path); 
  96.  
  97. // file extension
  98. $fext = strtolower(substr(strrchr($fname,"."),1));
  99.  
  100. // check if allowed extension
  101. if (!array_key_exists($fext, $allowed_ext)) {
  102.   die("Not allowed file type."); 
  103. }
  104.  
  105. // get mime type
  106. if ($allowed_ext[$fext] == '') {
  107.   $mtype = '';
  108.   // mime type is not set, get from server settings
  109.   if (function_exists('mime_content_type')) {
  110.     $mtype = mime_content_type($file_path);
  111.   }
  112.   else if (function_exists('finfo_file')) {
  113.     $finfo = finfo_open(FILEINFO_MIME); // return mime type
  114.     $mtype = finfo_file($finfo, $file_path);
  115.     finfo_close($finfo);  
  116.   }
  117.   if ($mtype == '') {
  118.     $mtype = "application/force-download";
  119.   }
  120. }
  121. else {
  122.   // get mime type defined by admin
  123.   $mtype = $allowed_ext[$fext];
  124. }
  125.  
  126.     // Browser will try to save file with this filename, regardless original filename.
  127.     // You can override it if needed.
  128.  
  129.     if (!isset($_GET['fc']) || empty($_GET['fc'])) {
  130.       $asfname = $fname;
  131.     }
  132.     else {
  133.       // remove some bad chars
  134.       $asfname = str_replace(array('"',"'",'\\','/'), '', $_GET['fc']);
  135.       if ($asfname === '') $asfname = 'NoName';
  136.     }
  137.  
  138.     // set headers
  139.     header("Pragma: public");
  140.     header("Expires: 0");
  141.     header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  142.     header("Cache-Control: public");
  143.     header("Content-Description: File Transfer");
  144.     header("Content-Type: $mtype");
  145.     header("Content-Disposition: attachment; filename=\"$asfname\"");
  146.     header("Content-Transfer-Encoding: binary");
  147.     header("Content-Length: " . $fsize);
  148.  
  149. // download
  150. // @readfile($file_path);
  151. $file = @fopen($file_path,"rb");
  152. if ($file) {
  153.  
  154.   while(!feof($file)) {
  155.     print(fread($file, 1024*8));
  156.     flush();
  157.     if (connection_status()!=0) {
  158.       @fclose($file);
  159.       die();
  160.     }
  161.   }
  162.   @fclose($file);
  163. }
  164.  
  165. //if (!LOG_DOWNLOADS) die();
  166.  
  167.  
  168. $f = @fopen(LOG_FILE, 'a+');
  169. if ($f) {
  170.   @fputs($f, date("m.d.Y g:ia")."  ".$_SERVER['REMOTE_ADDR']."  ".$fname."\n");
  171.   @fclose($f);
  172. }
  173. ?>
regards,
Omer aslam
Feb 8 '14 #2

Sign in to post your reply or Sign up for a free account.

Similar topics

0
by: Michel | last post by:
Hi, I've the code bellow who give me a file to download. The files are sored in a folder. The filename is the id of the data stored in a table. The name of the file at the download time will be...
0
by: Ilia Makarenko | last post by:
Hi everyone! I've got a problem with IIS 6.0 when downloading files with size > 4 Mb. So I am trying to download file in chunks, but it doesn't work. Only pert of the file is downloaded (~6.5 of...
1
by: Skwish | last post by:
Hi, I have been using Dim filename As String Dim filepath As String filename = "Steve.txt" filepath = Server.MapPath(".") & "\" & filename Response.Clear()
1
by: user2008 | last post by:
Hi all, I want to track how many times visitor download file from my website, for example, when visitor click on a download link, a ASPX page will be requested, after that it will redirect to a...
4
by: Fred | last post by:
hi, how can i make a link in my asp.net 1.1 pages to a file (its located on another PC, i read the full unc path and file name from SQL server database) how do i get the \ right and how do i get...
7
by: seberino | last post by:
How make a Python script 1. login 2. type password & 3. download file all from a **remote web site**? I'm not comfortable with *MY* software handling the password part.
16
by: matt | last post by:
I have used some free code for listing files for download, but I want to send an email to the administrator when the file has been downloaded. I have got some code in here that does it, but it will...
8
by: BiT | last post by:
Hello, I'm working right now on project in vb.net 2005 for my company, i need the project to download file from the company web site. In order to get the file i have to give the site address...
5
by: vinodkus | last post by:
dear sir/madam I have to write a code for download file using asp. please help me thanks in advance
3
colinod
by: colinod | last post by:
I am trying to get my site to download mp3 files without having to right click - save as on a link. I have found this code, which works as long as the file names are short, if they get a bit long it...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: Vimpel783 | last post by:
Hello! Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
1
by: Shællîpôpï 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
0
by: af34tf | last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.