首页 > 代码库 > php 之跨域上传图片
php 之跨域上传图片
因为要将所有上传的图片上传到一台独立的图片服务器上面,js上传时存在跨域问题,网上找到这种,通过php curl方式,将图片重新发送到另外一台服务器上保存,并返回图片路径!
这种方式存在一定问题:
1,上传大图片时,比如2M,需要将图片首先传到服务器,然后再传到图片服务器,中间需要4M的传输,加大了上传时间!
2,从服务器转到图片服务器的时候因为没有保存,传输使用的是临时文件,考虑到图片格式的限制,将图片进行了重命名,传输之后对该图片进行删除,碰到一些未知问题是可能导致图片删除失败,增加了服务器存储空间!
代码如下:
[html] view plain copy
- 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;
- }
- }
php 之跨域上传图片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。