登录 注册

登录

问题 改造Remository上傳檔案自動改名

更多
2008年11月05日 16:51 #1 作者: 阿恩
這個方法是簡易的~~他能做到上傳檔案系統會自動幫你修改檔名,如果照我下面的方法他就是自動亂數決定
找到remositoryFile.php這個檔案
搜尋
'xls' => 'excel.gif'
應該能找到

function saveFile () {
$default_icon = array (
'txt' => 'document.gif',
'exe' => 'executable.gif',
'tar' => 'archive_tar.gif',
'gz' => 'archive_gz.gif',
'rar' => 'archive_rar.gif',
'zip' => 'archive_zip.gif',
'png' => 'pics.gif',
'gif' => 'pics.gif',
'jpg' => 'pics.gif',
'pdf' => 'pdf1.gif',
'doc' => 'word.gif',
'rtf' => 'word.gif',
'xls' => 'excel.gif'
);

在下面增加

$this->realname=(((double)microtime() * time()) * 10000).stristr($this->realname,".");

這樣上傳檔案他就會自動改名了~~測試過大量上傳30檔案也不會有被覆蓋的情況出現

不過這樣作法目前有很大缺陷
移動或者更新檔案~~就會造成 檔案遺失
因為不管在前後台只要一更新檔案,系統就會再度為檔案改名稱,造成檔案遺失,目前還沒能解決
有需要得就暫時勉強用著吧,還望有能力的人可以再度改良精進一下


登录 或者   注册一个会员帐号 来参与讨论

更多
2008年11月05日 21:14 #2 作者: Joomla之门
看起来你的修改目的是为了避免上传多个档案时“被覆蓋”,但是我觉得 Remository 本身就已经解决了这个问题。

不知道你现在用哪个 Remository 版本?在 Remository 3.40 之后的版本好像都已经解决这个问题。

作者的解决方法是:给每个上传的文件名后面添加该文件的 ID。由于每次上传时都递增生成新的 ID,因此 ID 本身是永远不会重复的。即使你连续上传300个档案,即使这300个档名都一样,那么在上传之后,各自的档名也就不一样了。

所以,我觉得你这个修改似乎已经没有实用价值了。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年11月06日 09:20 #3 作者: 阿恩
白老大可能不了解我的用意,這樣改法是針對中文檔名去做的,因為中文檔名上傳下載後副檔名會消失,這是為了解決這問題所以才修改上傳自動改名的,像我自己網站Remository是開放給註冊會員上傳的,會員數量四萬多之前告訴網友上傳前請修改檔名不要有中文改用英數,可惜網友們總是不喜歡看說明文字,上傳檔案還是中文居多,變成下載的人部知道他副檔名是為何,所以才用這個修改方法把檔案名稱改成亂數

主要還是針對中文地區Remository有開放網友上傳使用的

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年11月06日 09:29 #4 作者: Joomla之门
呵呵,原来是这样!那么你这个修改是蛮有用的。

本站一直都是采用英文档名,上传者也都是这么做的,因此没遇到过你说的情况。

我会找机会跟 Remository 的作者谈谈,看看他能否改进一下这个功能,要么正确处理中文档名及其副档名,要么干脆禁止除英数以外的其它档名。

感谢你的分享!

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年11月06日 10:19 #5 作者: 阿恩
白老的解釋也給我得到一個新靈感,

每个上传的文件名后面添加该文件的 ID。由于每次上传时都递增生成新的 ID,因此 ID 本身是永远不会重复的。

我想可以試著把檔名直接換掉,改用文件的ID取代,這樣就解決掉了中文問題,不過可能還是需勞煩白老與作者商談看看^^是否能多加入取代檔名功能

小弟我對PHP也是不熟@@都是靠瞎子摸象 誤打誤撞,一直測試亂改在錯誤中找到方法的^^

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年11月06日 11:34 #6 作者: Joomla之门
呵呵,你已经很不错了。在 try and error 中,你就可以成长为 php 高手了!

我已经在 Remository 官方网站 提交了我的建议。等待作者处理吧。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论