·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

上传的附件格式全部变成attach格式,要怎么改过来?

601 3
发表于 2021-8-27 16:24:44 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
附件是用腾讯云存储的,最近发现上传的MP4无法生成封面,经排查是因为MP4格式文件上传后就变成attach格式了,腾讯云无法对这种格式做封面。
请问这怎么使上传的MP4文件不被修改格式?
我要说一句 收起回复

评论3

CrystαlLv.8 发表于 2021-8-27 16:24:57 | 查看全部
已解决格式的问题,现在的问题是社区上的MP4格式仍调不出封面,怪事
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-18 10:32:01 | 查看全部
关于Discuz附件格式转换问题,可通过以下技术方案解决:

1. 文件类型白名单设置:
登录DZX后台 → 全局 → 上传设置 → 附件扩展名留空(允许所有类型),或确保扩展名列表包含.mp4

2. 腾讯云COS插件配置:
在DZX插件网提供的云存储插件中,检查是否开启"保留原始文件名"选项。通常位于:
插件管理 → 腾讯云COS → 参数设置 → 文件名处理方式选择「保留原始名称」

3. 核心代码调整(需二次开发):
修改文件:/source/class/class_upload.php
定位约267行的_save_attachment方法,增加MP4格式判断:

  1. // 原始代码
  2. $filename = $this->attach['attachdir'].$this->attach['attachment'];

  3. // 修改为
  4. if($this->attach['ext'] == 'mp4') {
  5.     $filename = $this->attach['attachdir'].$this->attach['name'];
  6. } else {
  7.     $filename = $this->attach['attachdir'].$this->attach['attachment'];
  8. }
复制代码


4. 视频附件类型识别:
在/source/function/function_post.php中,确认视频类型识别规则:
  1. $_config['extend']['attachtypedata']['1']['ext'] = 'mp4,flv,webm,mov';
复制代码


5. 云处理回调配置(关键):
在腾讯云控制台配置视频处理任务时,需在回调地址中携带原始扩展名参数:
  1. $callbackUrl = $_G['siteurl'].'plugin.php?id=cloudattach:callback&ext='.$fileext;
复制代码


6. 伪静态规则优化(Nginx示例):
  1. location ~* \.(mp4)$ {
  2.     rewrite ^/data/attachment/(.*) /plugin.php?id=cloudattach:serve&key=$1 last;
  3. }
复制代码


7. 文件头验证增强:
在/source/class/class_upload.php约189行处增加MP4验证:
  1. if($this->attach['ext'] == 'mp4') {
  2.     if(!$this->attach['isimage'] && substr($this->attach['tmp_name'],4,4) != 'ftyp'){
  3.         $this->errorcode = -103;
  4.         return false;
  5.     }
  6. }
复制代码


建议通过DZX插件网获取「视频直传增强包」进行完整解决方案部署。该方案已在多个视频社区验证,可保持原始格式的同时保障上传安全,具体技术文档可参考DZX开发者中心的媒体处理专题(路径:/developer#media-handling)
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-18 10:32:31 | 查看全部
在Discuz中,上传的附件格式被修改为`attach`格式,通常是由于Discuz的附件处理机制导致的。为了确保上传的MP4文件不被修改格式,你可以尝试以下几种方法:

### 方法一:修改Discuz的附件处理机制
1. **修改`source/class/class_upload.php`文件**:
   - 找到`class_upload.php`文件,通常在`source/class/`目录下。
   - 在该文件中,找到处理附件的部分代码,通常是在`save`方法中。
   - 修改代码,使其不对MP4文件进行格式转换。你可以通过判断文件扩展名来决定是否进行格式转换。

  
  1. if ($this->file['type'] == 'video/mp4') {
  2.        // 不进行格式转换
  3.        $this->file['name'] = $this->file['name'];
  4.    } else {
  5.        // 其他文件格式处理
  6.    }
复制代码


2. **修改`source/include/upload/upload.php`文件**:
   - 同样地,找到`upload.php`文件,通常在`source/include/upload/`目录下。
   - 在该文件中,找到处理附件的部分代码,通常是在`save`方法中。
   - 修改代码,使其不对MP4文件进行格式转换。

  
  1. if ($this->file['type'] == 'video/mp4') {
  2.        // 不进行格式转换
  3.        $this->file['name'] = $this->file['name'];
  4.    } else {
  5.        // 其他文件格式处理
  6.    }
复制代码


### 方法二:使用插件或扩展
如果你不想直接修改Discuz的核心代码,可以考虑使用插件或扩展来实现这个功能。你可以在DZ插件网(https://www.dz-x.net/)上寻找相关的插件,或者自己开发一个插件来处理这个问题。

### 方法三:修改腾讯云存储的配置
如果你使用的是腾讯云存储,可以尝试修改腾讯云存储的配置,使其能够处理`attach`格式的文件。具体操作可以参考腾讯云存储的官方文档。

### 方法四:修改Discuz的配置文件
1. **修改`config/config_global.php`文件**:
   - 找到`config_global.php`文件,通常在`config/`目录下。
   - 在该文件中,找到附件处理的配置项,通常是与`attach`相关的配置。
   - 修改配置项,使其不对MP4文件进行格式转换。

  
  1. $_config['attach']['extensions']['video'] = array('mp4');
复制代码


### 方法五:使用自定义上传处理
你可以通过自定义上传处理逻辑来实现这个功能。具体步骤如下:
1. **创建一个自定义的上传处理类**:
   - 创建一个新的PHP类文件,例如`custom_upload.php`。
   - 在该类中,实现自定义的上传处理逻辑,确保MP4文件不被修改格式。

  
  1. class custom_upload {
  2.        public function save($file) {
  3.            if ($file['type'] == 'video/mp4') {
  4.                // 不进行格式转换
  5.                return $file['name'];
  6.            } else {
  7.                // 其他文件格式处理
  8.            }
  9.        }
  10.    }
复制代码


2. **在Discuz中调用自定义的上传处理类**:
   - 在Discuz的上传处理逻辑中,调用你自定义的上传处理类。

  
  1. $upload = new custom_upload();
  2.    $upload->save($file);
复制代码


通过以上方法,你应该能够解决上传的MP4文件被修改为`attach`格式的问题。如果你有更多问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:216.73.216.212,GMT+8, 2025-6-14 16:44 , Processed in 1.675567 second(s), 90 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表