php 之跨域上传图片 (smallnews笔记)
2016-02-17 10:31
417 查看
因为要将所有上传的图片上传到一台独立的图片服务器上面,js上传时存在跨域问题,网上找到这种,通过php curl方式,将图片重新发送到另外一台服务器上保存,并返回图片路径!
这种方式存在一定问题:
1,上传大图片时,比如2M,需要将图片首先传到服务器,然后再传到图片服务器,中间需要4M的传输,加大了上传时间!
2,从服务器转到图片服务器的时候因为没有保存,传输使用的是临时文件,考虑到图片格式的限制,将图片进行了重命名,传输之后对该图片进行删除,碰到一些未知问题是可能导致图片删除失败,增加了服务器存储空间!
代码如下:
这种方式存在一定问题:
1,上传大图片时,比如2M,需要将图片首先传到服务器,然后再传到图片服务器,中间需要4M的传输,加大了上传时间!
2,从服务器转到图片服务器的时候因为没有保存,传输使用的是临时文件,考虑到图片格式的限制,将图片进行了重命名,传输之后对该图片进行删除,碰到一些未知问题是可能导致图片删除失败,增加了服务器存储空间!
代码如下:
public function upload($files = ''){ if($files === ''){ $files = $_FILES; } if(empty($files)){ $this->error = '没有上传的文件!'; return false; } $ext = pathinfo(strip_tags($files['file']['name']), PATHINFO_EXTENSION); $new_name = dirname($files['file']['tmp_name']).'/'.date("YmdHis").rand(0,99).".".$ext; rename($files['file']['tmp_name'],$new_name); $fields['img'] = '@'.$new_name; //初始化curl $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $this->url); curl_setopt($ch, CURLOPT_POST, 1 ); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //运行curl $r = curl_exec($ch); curl_close($ch); @unlink($new_name); if($r){ return json_decode($r,true); }else{ $this->error = "请求失败"; return false; } }
相关文章推荐
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- upload上传单张图片
- 图片引发的溢出危机(图)
- 星外PHP4升级到PHP5的注意事项与方法
- C#实现把彩色图片灰度化代码分享
- C#将图片和字节流互相转换并显示到页面上
- C#监控文件夹并自动给图片文件打水印的方法
- 纯CSS实现的当鼠标移上图片添加阴影效果代码
- C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- C#图片添加水印的实现代码
- 随鼠标移动的图片或文字特效代码
- CSS 图片横向排列实现代码
- C#实现将Email地址转成图片显示的方法
- 超级经典一套鼠标控制左右滚动图片带自动翻滚
- 用css实现图片垂直居中的使用技巧
- C++实现读取图片长度和宽度
- php面向对象全攻略 (十四) php5接口技术
- 简单介绍下 PHP5 中引入的 MYSQLI的用途