您的位置:首页 > 编程语言 > PHP开发

php 之跨域上传图片 (smallnews笔记)

2016-02-17 10:31 417 查看
因为要将所有上传的图片上传到一台独立的图片服务器上面,js上传时存在跨域问题,网上找到这种,通过php curl方式,将图片重新发送到另外一台服务器上保存,并返回图片路径!

这种方式存在一定问题:

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php5 图片 upload