需要修改才能使用的原因与前一篇文章的描述相同,还是因为我们在 SAE 的代码空间中没有写权限。
言归正传,需要修改的两个文件及其路径:
- include/conn.inc.php
- data/httpfile/upload.class.php
如果您不是全新安装,则需要用 phpMyAdmin 导出数据库结构和数据为.sql格式并导入您在 SAE 相应应用的 MySQL 数据库。
如果导入出错,将.sql语句中的 “LOCK TABLES 表名 WRITE;” 和 “UNLOCK TABLES;” 全部注释掉即可导入成功,数量较多可以使用全文替换。
然后,您可以先修改再上传,也可以先上传再修改,下面是修改后的代码,注意如果以下代码出错,请在文章末尾下载完整附件。
修改后的 conn.inc.php 可以实现正常连接 MySQL 数据库,当然您得先初始化才行,代码如下:
if(!defined('IN_PHPMYWIND')) exit('Request Error!');
/*
**************************
(C)2010-2013 phpMyWind.com
update: 2012-2-14 17:19:08
**************************
*/
//数据库服务器
$db_host = SAE_MYSQL_HOST_M.":".SAE_MYSQL_PORT;
//数据库用户名
$db_user = SAE_MYSQL_USER;
//数据库密码
$db_pwd = SAE_MYSQL_PASS;
//数据库名
$db_name = SAE_MYSQL_DB;
//数据表前缀
$db_tablepre = 'pmw_';
//数据表编码
$db_charset = 'utf-8';
修改后的 upload.class.php 可以解决文件上传的问题,上传的文件将保存在您的 Storage 空间里。
注意需要将两处 "您的 Storage Domain" 替换为您设置的值,代码如下:
if(!defined('IN_PHPMYWIND')) exit('Request Error!');
/*
**************************
(C)2010-2013 phpMyWind.com
update: 2011-4-21 14:52:54
person: Feng
**************************
*/
//不限制响应时间
@set_time_limit(0);
//引入水印文件
require(PHPMYWIND_DATA.'/watermark/watermark.class.php');
/*
* 上传函数
*
* @access public
* @upfile string 上传表单name
* @iswatermark string 是否添加水印
*/
function UploadFile($upfile, $iswatermark='')
{
global $dosql;
global $cfg_max_file_size;
global $cfg_image_dir, $cfg_soft_dir, $cfg_media_dir;
global $cfg_upload_img_type, $cfg_upload_soft_type, $cfg_upload_media_type;
global $cfg_markswitch, $cfg_markpicurl, $cfg_markminwidth, $cfg_markminheight, $cfg_markwhere, $cfg_marktext, $cfg_marksize, $cfg_markcolor, $cfg_marktype;
//检测是否存在
$tempfile_tn = isset($_FILES[$upfile]['tmp_name']) ? $_FILES[$upfile]['tmp_name'] : '';
if($tempfile_tn=='' or !is_uploaded_file($tempfile_tn))
{
//return '请选择要上传的文件!';
return '请选择上传文件或您上传的文件超过php.ini设定最大文件上传限制['.ini_get('upload_max_filesize').']!';
}
//获取上传文件信息
$tempfile = $_FILES[$upfile];
$tempfile_name = $tempfile['name'];
$tempfile_size = $tempfile['size'];
$tempfile_ext = strtolower(substr(strrchr($tempfile_name, '.'), 1));
//强制限定的某些文件类型禁止上传
if(in_array($tempfile_ext, explode('|', 'php|pl|cgi|asp|aspx|jsp|php3|shtm|shtml')))
{
return '您上传的文件类型为:['.$tempfile_ext.'],该类文件不允许通过后台上传!';
}
//检查文件类型,上传文件目录
if(in_array($tempfile_ext, explode('|', strtolower($cfg_upload_img_type))))
{
$upload_url = 'image';
//$upload_dir = $cfg_image_dir;
$upload_dir = 'image';
}
else if(in_array($tempfile_ext, explode('|', strtolower($cfg_upload_soft_type))))
{
$upload_url = 'soft';
//$upload_dir = $cfg_soft_dir;
$upload_dir = 'soft';
}
else if(in_array($tempfile_ext, explode('|', strtolower($cfg_upload_media_type))))
{
$upload_url = 'media';
//$upload_dir = $cfg_media_dir;
$upload_dir = 'media';
}
else
{
return '您上传的文件类型为:['.$tempfile_ext.'],该文件类型不允许上传!';
}
$save_type = $upload_url;
//检查文件大小
if($tempfile_size > $cfg_max_file_size)
{
return '您上传的文件超过系统设定最大文件上传限制['.GetRealSize($cfg_max_file_size).']!';
}
//创建文件夹
$ymd = date('Ymd');
$upload_url .= '/'.$ymd;
$upload_dir .= '/'.$ymd;
//上传文件名称
$filename = time()+rand(1,9999).'.'.$tempfile_ext;
//上传文件路径
$save_url = 'uploads/'.$upload_url.'/'.$filename;
$save_dir = $upload_dir.'/'.$filename;
$s = new SaeStorage();
//移动临时文件到指定目录
$result = $s->upload("您的 Storage Domain" ,$save_dir ,$tempfile_tn); if($result)
{
//添加数据库记录
$dosql->ExecNoneQuery("INSERT INTO `#@__uploads` (name, path, size, type, posttime) VALUES ('$filename', '".$s->getUrl("luopeita",$save_dir)."', '$tempfile_size', '$save_type', '".time()."')");
//上传成功,返回数组
return array($filename, $tempfile_size, $s->getUrl("您的 Storage Domain",$save_dir), $save_dir);
}
else
{
return '发生未知错误,上传失败!';
}
}
点击下载修改后的文件:PHPMyWind.zip
本文代码修改自 SAEBBS-duyueping:http://cloudbbs.org/forum.php?mod=viewthread&tid=25243
版权属于:香菇
本文链接:https://blog.siitake.cn/phpmywind-sae.html
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!