在使用Dedecms CMS时,图集上传图片默认需要手动填写注释。然而,在实际操作中,我们可能已经准备好了产品图和图片名称,希望上传图片后能够自动获取图片名作为注释。以下是一个详细的教程,帮助您实现这一功能。
首先,打开文件 `\\\\dede\\\\swfupload.php`(注意:`dede` 是默认后台目录,请根据实际情况调整路径)。找到以下代码:

echo "FILEID:" . $_SESSION['fileid'];
    
在其上方加入以下代码:

$file_snames = explode('.', $Filename);
$file_filename = $file_snames[count($file_snames) - 2];
$_SESSION['file_filename'][$_SESSION['fileid']] = $file_filename;
    
继续查找以下代码段(注意:由于 `swfupload` 基于 UTF-8 编码,因此需要一个转码判断,确保接收到的文件名称不会乱码):

/************************
// 删除指定ID的图片
************************/
    
在其下方添加如下代码:

/************************
// 生成注释
************************/
else if ($dopost == 'thumbalt') {
    if (empty($id)) {
        header('HTTP/1.1 500 Internal Server Error');
        echo 'No ID';
        exit(0);
    }
    if (!is_array($_SESSION['file_filename']) || !isset($_SESSION['file_filename'][$id])) {
        header('HTTP/1.1 404 Not found');
        exit(0);
    }
    if ($cfg_soft_lang == 'utf-8') {
        $file_filename = $_SESSION['file_filename'][$id];
    } else {
        $file_filename = iconv('UTF-8', 'gb2312//IGNORE', $_SESSION['file_filename'][$id]);
    }
    echo "注释:";
    exit(0);
}
    

接下来,打开文件 `\\\\dede\\\\album_add.php`,找到以下代码:

$imginfo = !empty(${ 'picinfook' . $k }) ? ${ 'picinfook' . $k } : '';
    
将其修改为:

$imginfo = !empty(${ 'picinfook' . $k }) ? ${ 'picinfook' . $k } : $_SESSION['file_filename'][$k];
    

然后,打开文件 `\\\\dede\\\\album_edit.php`,同样将上述代码修改为:

$imginfo = !empty(${ 'picinfook' . $k }) ? ${ 'picinfook' . $k } : $_SESSION['file_filename'][$k];
    

如果系统是 GBK 编码格式,还需进行以下额外修改。打开 `album_add.php`,找到以下代码:

$imgurls = addslashes($imgurls);
    
将其改为:

$imgurls = addslashes(mb_convert_encoding($imgurls, 'GB2312', 'UTF-8'));
    

最后,打开文件 `\\\\dede\\\\js\\\\handlers.js`,找到以下代码:

newImgDiv.innerHTML += '
注释:
';
将其修改为:

newImgDiv.innerHTML += '
'; var picinfo = document.getElementById('picinfo' + albImg); var myajax = new DedeAjax(picinfo, false, false, "", "", ""); myajax.SendGet2('swfupload.php?dopost=thumbalt&id=' + pid); DedeXHTTP = null;
完成以上步骤后,您的 Dedecms 系统即可实现在上传图片时自动获取图片名称作为注释的功能。希望这篇教程对您有所帮助!