您的位置:首页 > 其它

[置顶] 新浪云 上传图片

2016-08-24 16:38 267 查看
由于将应用部署在新浪云上,没有写的权限,所以在上传图片时会遇到一些问题,本文就这些问题进行解释。

不管使用什么插件进行上传都会生成全局变量 $_FILES, 如果在本地测试或者在拥有写权限的服务器上时,经过一系列处理,将缓存文件移到自己设置的目录下时会用到函数


其实该函数对 文件移动的新位置 即newloc 有写权限的要求。在前面说过,新浪云平台上没有写的权限,无法使用该函数。不过,新浪云有一个Storage(免费) 可以用来存储图片、多媒体、二进制数据,也提供了Storage类,可以进行图片的上传,下载。

Storage 的API手册 http://apidoc.sinaapp.com/class-sinacloud.sae.Storage.html
其中访问图片路径为 http://myapp-mybucket.stor.sinaapp.com/path/to/my/file.txt

$s = new Storage();
$list = $s->listBuckets();
$s->putObjectFile($tmp_name, $list[0], "img/" . $_FILES['Filedata']['name']);


下面代码为thinkPHP中使用uploadify 上传文件时后台代码。仅供参考。

if(APP_MODE == "sae"){

$userinfo=$this->userinfo;
$s = new Storage();
$list=$s->listBuckets();
$verifyToken = md5('unique_salt' . $_POST['timestamp']);
if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
$fileTypes = array('jpg', 'jpeg', 'gif', 'png');
$fileParts = pathinfo($_FILES['Filedata']['name']);
if (in_array($fileParts['extension'], $fileTypes)) {
$map["avater"]=$_FILES['Filedata']['name'];
M("xue_users")->where("id={$userinfo['id']}")->save($map);
$s->putObjectFile($_FILES['Filedata']['tmp_name'], $list[0], "img/".$_FILES['Filedata']['name']);
echo '1';
} else {
echo '0';
}
}
}else{

$userinfo=$this->userinfo;
$path= $_SERVER["SCRIPT_FILENAME"];
$path=preg_replace("/index\.php/i",'Public/img',$path);
//  $targetFolder = __PUBLIC.'img'; // Relative to the root
$verifyToken = md5('unique_salt' . $_POST['timestamp']);
if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
//不用修改
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $path;
$targetFile = rtrim($targetPath, '/') . '/' . $_FILES['Filedata']['name'];
//解决中文文件名乱码问题
$targetFile=iconv("UTF-8", "GB2312", $targetFile);

$map["avater"]=$_FILES['Filedata']['name'];
M("xue_users")->where("id={$userinfo['id']}")->save($map);
// Validate the file type
$fileTypes = array('jpg', 'jpeg', 'gif', 'png'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);

if (in_array($fileParts['extension'], $fileTypes)) {
move_uploaded_file($tempFile, $targetFile);
echo '1';
} else {
echo '0';
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: