[置顶] 新浪云 上传图片
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
下面代码为thinkPHP中使用uploadify 上传文件时后台代码。仅供参考。
不管使用什么插件进行上传都会生成全局变量 $_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'; } } }
相关文章推荐
- 自定义view系列(3)--给自定义View添加点击事件
- JAVA序列化标准格式(XML、JSON)
- opengl es三角形例子
- 非常好用的List交集、并集
- Qt之模型/视图(自定义按钮)(重绘QStyleOptionButton)
- UVA11754 - Code Feat
- Oracle资料整理
- 这一次,我优化了37%的内存
- 日历--给input赋值
- JNI NDK开发Crash错误定位 调试
- python 安装wxPython
- EditText的输入要求
- matlab读入多张图片
- IOC
- ion-tap选项卡及路由结合ion-tap
- windows连接远程打印机
- angularjs向指令中传递数据
- 数据仓库的模型设计
- iOS 音视频合成
- 在js传递参数中含加号(+)的处理方式