// This is a net new file find a directory for it and setup the object $file->fid = db_next_id('{file}_fid'); $file->area = $area; $file->filename = $filename; //增加以下内容 <em>$file->realname = $realname ? $realname : $filename;</em>
再在这个函数中向下找到如下句子:
if ($update) { db_query("UPDATE {file} SET working='%s' WHERE fid=%d", $file->working, $file->fid); } else { db_query("INSERT INTO {file} (fid, area, directory, filename, mimetype, size, active, working, private) VALUES (%d,'%s',%d,'%s','%s',%d,'%s','%s','%s')", $file->fid, $file->area, $file->directory, $file->filename, $file->mimetype, $file->size, $file->active, $file->working, $file->private); }
重命名
上传照片后重命名图片文件,程序上要稍微修改下
我自己的方法
我搜了一下本网站,涉及PHP5或PHP4问题,还有MYSQL使用的字符集等。我自己按网上的一些方法做了以下尝试:
1,安装transliteration模组,实现保证中文名文件经过转化保存到服务器。
2,以filemanager和attachment代替upload。
3,修改表file增加realname字段,varchar(255)
4,修改filemanager函数filemanager_add_upload为如下
function filemanager_add_upload($source, $area, $private = FALSE, $file = FALSE) {$upload = file_check_upload($source);
return filemanager_add_file($area, $upload->filepath, $upload->filename, $upload->filemime, FALSE, $private, $file,$upload->realname);
}
5,修改filemanager_add_file函数
function filemanager_add_file($area, $path, $filename, $mimetype = 'application/unknown', $remove = TRUE, $private = FALSE, $file = FALSE,$realname ='') {即在函数filemanager_add_file参数中增加$realname=''
在这个函数找到内容如下并修改:
// This is a net new file find a directory for it and setup the object$file->fid = db_next_id('{file}_fid');
$file->area = $area;
$file->filename = $filename;
//增加以下内容
<em>$file->realname = $realname ? $realname : $filename;</em>
再在这个函数中向下找到如下句子:
if ($update) {db_query("UPDATE {file} SET working='%s' WHERE fid=%d", $file->working, $file->fid);
}
else {
db_query("INSERT INTO {file} (fid, area, directory, filename, mimetype, size, active, working, private) VALUES (%d,'%s',%d,'%s','%s',%d,'%s','%s','%s')",
$file->fid, $file->area, $file->directory, $file->filename, $file->mimetype, $file->size, $file->active, $file->working, $file->private);
}
将db_query内容修改为如下:
db_query("INSERT INTO {file} (fid, area, directory, filename, mimetype, size, active, working, private,realname) VALUES (%d,'%s',%d,'%s','%s',%d,'%s','%s','%s','%s')",
$file->fid, $file->area, $file->directory, $file->filename, $file->mimetype, $file->size, $file->active, $file->working, $file->private,$file->realname);
6,attachment只要修改一个函数attachment_add
将
if (isset($remove_key)) {array_splice($node->attachments, $key, 1);
}
else {
$new_attachment['title'] = $file->filename;
改为
if (isset($remove_key)) {array_splice($node->attachments, $key, 1);
}
else {
$new_attachment['title'] = $file->realname ? $file->realname : $file->filename;
这样就可以应付所有的文件名问题了!