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.
1 7519
hi gonzaloJr,
see below code for example you can use the anchor tag to download the file by specifying in this way - <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 -
<?php
-
# Sample call (browser will try to save with new file name):
-
# download.php?f=phptutorial.zip&fc=php123tutorial.zip
-
###############################################################
-
-
// Allow direct file download (hotlinking)?
-
// Empty - allow hotlinking
-
// If set to nonempty value (Example: example.com) will only allow downloads when referrer contains this text
-
define('ALLOWED_REFERRER', '');
-
-
// Download folder, i.e. folder where you keep all files for download.
-
// MUST end with slash (i.e. "/" )
-
-
define('BASE_DIR','E:/xampp/htdocs/ews/vanguard/docs');
-
-
// log downloads? true/false
-
define('LOG_DOWNLOADS',true);
-
-
// log file name
-
define('LOG_FILE','downloads.log');
-
-
// Allowed extensions list in format 'extension' => 'mime type'
-
// If myme type is set to empty string then script will try to detect mime type
-
// itself, which would only work if you have Mimetype or Fileinfo extensions
-
// installed on server.
-
$allowed_ext = array (
-
// archives
-
// documents
-
'pdf' => 'application/pdf',
-
'doc' => 'application/msword',
-
'docx' => 'application/msword',
-
'ppt' => 'application/msword',
-
'pptx' => 'application/octet-stream',
-
'pptx' => 'application/octet-stream',
-
'wpd' => 'application/octet-stream',
-
'xls' => 'application/octet-stream',
-
'xlsx' => 'application/octet-stream'
-
);
-
-
-
-
####################################################################
-
### DO NOT CHANGE BELOW
-
####################################################################
-
-
// If hotlinking not allowed then make hackers think there are some server problems
-
if (ALLOWED_REFERRER !== ''
-
&& (!isset($_SERVER['HTTP_REFERER']) || strpos(strtoupper($_SERVER['HTTP_REFERER']),strtoupper(ALLOWED_REFERRER)) === false)
-
) {
-
die("Internal server error. Please contact system administrator.");
-
}
-
-
// Make sure program execution doesn't time out
-
// Set maximum script execution time in seconds (0 means no limit)
-
set_time_limit(0);
-
-
if (!isset($_GET['f']) || empty($_GET['f'])) {
-
die("Please specify file name for download.");
-
}
-
-
// Get real file name.
-
// Remove any path info to avoid hacking by adding relative path, etc.
-
$fname = basename($_GET['f']);
-
-
// Check if the file exists
-
// Check in subfolders too
-
function find_file ($dirname, $fname, &$file_path) {
-
$dir = opendir($dirname);
-
-
while ($file = readdir($dir)) {
-
if (empty($file_path) && $file != '.' && $file != '..') {
-
if (is_dir($dirname.'/'.$file)) {
-
find_file($dirname.'/'.$file, $fname, $file_path);
-
}
-
else {
-
if (file_exists($dirname.'/'.$fname)) {
-
$file_path = $dirname.'/'.$fname;
-
return;
-
}
-
}
-
}
-
}
-
-
} // find_file
-
-
// get full file path (including subfolders)
-
$file_path = '';
-
find_file(BASE_DIR, $fname, $file_path);
-
-
if (!is_file($file_path)) {
-
die("File does not exist. Make sure you specified correct file name.");
-
}
-
-
// file size in bytes
-
$fsize = filesize($file_path);
-
-
// file extension
-
$fext = strtolower(substr(strrchr($fname,"."),1));
-
-
// check if allowed extension
-
if (!array_key_exists($fext, $allowed_ext)) {
-
die("Not allowed file type.");
-
}
-
-
// get mime type
-
if ($allowed_ext[$fext] == '') {
-
$mtype = '';
-
// mime type is not set, get from server settings
-
if (function_exists('mime_content_type')) {
-
$mtype = mime_content_type($file_path);
-
}
-
else if (function_exists('finfo_file')) {
-
$finfo = finfo_open(FILEINFO_MIME); // return mime type
-
$mtype = finfo_file($finfo, $file_path);
-
finfo_close($finfo);
-
}
-
if ($mtype == '') {
-
$mtype = "application/force-download";
-
}
-
}
-
else {
-
// get mime type defined by admin
-
$mtype = $allowed_ext[$fext];
-
}
-
-
// Browser will try to save file with this filename, regardless original filename.
-
// You can override it if needed.
-
-
if (!isset($_GET['fc']) || empty($_GET['fc'])) {
-
$asfname = $fname;
-
}
-
else {
-
// remove some bad chars
-
$asfname = str_replace(array('"',"'",'\\','/'), '', $_GET['fc']);
-
if ($asfname === '') $asfname = 'NoName';
-
}
-
-
// set headers
-
header("Pragma: public");
-
header("Expires: 0");
-
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
-
header("Cache-Control: public");
-
header("Content-Description: File Transfer");
-
header("Content-Type: $mtype");
-
header("Content-Disposition: attachment; filename=\"$asfname\"");
-
header("Content-Transfer-Encoding: binary");
-
header("Content-Length: " . $fsize);
-
-
// download
-
// @readfile($file_path);
-
$file = @fopen($file_path,"rb");
-
if ($file) {
-
-
while(!feof($file)) {
-
print(fread($file, 1024*8));
-
flush();
-
if (connection_status()!=0) {
-
@fclose($file);
-
die();
-
}
-
}
-
@fclose($file);
-
}
-
-
//if (!LOG_DOWNLOADS) die();
-
-
-
$f = @fopen(LOG_FILE, 'a+');
-
if ($f) {
-
@fputs($f, date("m.d.Y g:ia")." ".$_SERVER['REMOTE_ADDR']." ".$fname."\n");
-
@fclose($f);
-
}
-
?>
regards,
Omer aslam
Sign in to post your reply or Sign up for a free account.
Similar topics
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...
|
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...
|
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()
|
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...
|
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...
|
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.
|
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...
|
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...
|
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
|
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...
|
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...
|
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...
|
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...
|
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...
|
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)...
|
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...
|
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....
|
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
|
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...
| |