Joomla!上传中文文件
来源:互联网 发布:淘宝客服热线 编辑:程序博客网 时间:2024/06/02 09:34
国外的CMS系统一大问题就是上传中文附件。要么不支持上传,要么传上去不支持链接。
Joomla使用jce可以解决这个问题。
通过jce上传文件时,自动重命名,去掉中文即可。
在Joomla\components\com_jce\editor\libraries\classes\browser.php中,将upload函数中$name 重命名。
/** * Upload a file. * @return array $error on failure or uploaded file name on success */ public function upload() { // Check for request forgeries WFToken::checkToken() or die(); // check for feature access if (!$this->checkFeature('upload')) { JError::raiseError(403, 'Access to this resource is restricted'); } $filesystem = $this->getFileSystem(); jimport('joomla.filesystem.file'); header('Content-Type: text/json;charset=UTF-8'); header("Expires: Wed, 4 Apr 1984 13:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M_Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); // get uploaded file $file = JRequest::getVar('file', '', 'files', 'array'); // validate file data $this->validateUploadedFile($file); // get file name $name = JRequest::getVar('name', $file['name']); // decode name $name = rawurldecode($name); // check name if (WFUtility::validateFileName($name) === false) { throw new InvalidArgumentException('Upload Failed: The file name contains an invalid extension.'); } // check file name WFUtility::checkPath($name); // get extension from file name $ext = WFUtility::getExtension($file['name']); // trim extension $ext = trim($ext); // check extension exists if (empty($ext) || $ext === $file['name']) { throw new InvalidArgumentException('Upload Failed: The file name does not contain a valid extension.'); } // strip extension $name = WFUtility::stripExtension($name); // make file name 'web safe' // $name = WFUtility::makeSafe($name, $this->get('websafe_mode', 'utf-8'), $this->get('websafe_spaces'), $this->get('websafe_textcase')); //此处将makesafe改为直接用时间命名,纯数字,安全又可用 $name = date('Ymd-His-', time()).rand(0,999); // check name if (WFUtility::validateFileName($name) === false) { throw new InvalidArgumentException('Upload Failed: The file name contains an invalid extension.'); } // target directory $dir = JRequest::getVar('upload-dir'); // deocode directory $dir = rawurldecode($dir); // check destination path WFUtility::checkPath($dir); $upload = $this->get('upload'); // Check file number limits if (!empty($upload['total_files'])) { if ($filesystem->countFiles($dir, true) > $upload['total_files']) { throw new InvalidArgumentException(WFText::_('WF_MANAGER_FILE_LIMIT_ERROR')); } } // Check total file size limit if (!empty($upload['total_size'])) { $size = $filesystem->getTotalSize($dir); if (($size / 1024 / 1024) > $upload['total_size']) { throw new InvalidArgumentException(WFText::_('WF_MANAGER_FILE_SIZE_LIMIT_ERROR')); } } // add random string if ($upload['add_random']) { $name = $name . '_' . substr(md5(uniqid(rand(), 1)), 0, 5); } // rebuild file name - name + extension $name = $name . '.' . $ext; // create a filesystem result object $result = new WFFileSystemResult(); $complete = false; $contentType = JRequest::getVar('CONTENT_TYPE', '', 'SERVER'); // relative path $relative = WFUtility::makePath($dir, $name); // Only multipart uploading is supported for now if ($contentType && strpos($contentType, "multipart") !== false) { $result = $filesystem->upload('multipart', trim($file['tmp_name']), $dir, $name); if (!$result->state) { if (empty($result->message)) { $result->message = WFText::_('WF_MANAGER_UPLOAD_ERROR'); } $result->code = 103; } @unlink($file['tmp_name']); $complete = true; } else { $result->state = false; $result->code = 103; $result->message = WFText::_('WF_MANAGER_UPLOAD_ERROR'); $complete = true; } // upload finished if ($complete) { if ($result instanceof WFFileSystemResult) { if ($result->state === true) { $this->setResult($this->fireEvent('onUpload', array($result->path, $relative))); $this->setResult(basename($result->path), 'files'); } else { $this->setResult($result->message, 'error'); } } die(json_encode($this->getResult())); } }
0 0
- Joomla!上传中文文件
- joomla jce editor 解决上传中文名文件问题
- 上传中文文件
- FTP中文文件上传
- joomla上传方法
- joomla网站上传
- Joomla!中文语言包安装
- joomla中文语言包
- jspsmartupload上传文件中文乱码
- XE7上传文件中文乱码
- javaweb文件上传中文乱码
- FTP上传中文文件到中文路径
- Joomla 插件 attachments 使用时出现不支持ZIP文件上传的错误
- PHP修改上传大文件以及应当注意的事项----记录地理所joomla后台更改
- cgi上传文件中文的问题
- CuteEditor上传中文文件名的文件
- FTP 文件上传 解决中文乱码
- flex 解决上传文件中文名字问题
- Python--基础程序设计
- <supports-screens android:anyDensity="true" />
- VMware苹果开发环境
- UIButton与UIImageView的区别与联系
- Xcode 装逼插件:打字的震屏和火花效果
- Joomla!上传中文文件
- hiveserver问题
- 简单理解java反射机制
- 杂记<二>
- MySQL5.6分区数量太多引发的血案
- 2016年第一周目标制定
- 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
- ajax 跨域访问问题
- static