標題:
[SQL與PHP]
用php下載指定檔案並重新命名(另存新檔)
[打印本頁]
作者:
gswdkimo
時間:
2010-9-9 09:28
標題:
用php下載指定檔案並重新命名(另存新檔)
上傳的程式碼(放在表單後的JavaScript):
<script language="javascript">
function validate()
{
// 切割檔案路徑
var Ary = document.getElementById('file').value.split('\\');
// 建立隱藏標籤
var hideTag = document.createElement("input");
hideTag.setAttribute('name', 'filename');
hideTag.setAttribute('type', 'hidden');
document.getElementById('form1').appendChild(hideTag);
// 置入檔名到隱藏標籤
hideTag.value=Ary[Ary.length-1];
return true;
}
document.getElementById('form1').onsubmit = function() { return validate(); };
</script>
複製代碼
上傳的程式碼(接收上傳檔案的PHP):
<?php
function ch_filename($name)
{
$arr = explode('.', $name);
$arr[0] = (rand()%100).substr(md5($arr[0]), 0, 28);
return join('.', $arr);
}
if($_FILES['file']['size'] > 0)
{
$filename = ch_filename($_POST['filename']);
move_uploaded_file($_FILES['file']['tmp_name'],'upload/'.$filename);
// 新增資料到資料庫(filepath|filename)
$db->query("UPDATE `news` SET `file` = '".$_POST['filename']."|upload/".$filename."';");
}
?>
複製代碼
下載的超連結:
$filename <= 這個是要顯示給使用者看到的名稱(包含副檔名)
<a href="get_file.php?path=<?=$filepath?>&filename=<?=urlencode($filename)?>"><?=$filename?></a>
複製代碼
get_file.php 程式碼:
<?php
if(empty($_GET['path']) || empty($_GET['filename']))
{
echo '非正常路途徑進入本頁或參數錯誤';
exit();
}
if(file_exists($_GET['path']))
{
$FILEname = urlencode($_GET['filename']);
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
header("Content-Type: application/octetstream; name=$FILEname"); //for IE & Opera
header("Content-Type: application/octet-stream; name=$FILEname"); //for the rest
header("Content-Disposition: attachment; filename=$FILEname;");
header("Content-Transfer-Encoding: binary");
header("Cache-Control: cache, must-revalidate");
header("Pragma: public");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
readfile($_GET['path']);
//若無法使用,請改成readfile($_GET['path']."/".$_GET['filename']);
}
else
echo '檔案不存在';
?>
複製代碼
歡迎光臨 資訊家電班NO7 (http://imce07.freehostia.com/forums/)
Powered by Discuz! 7.2