curl上传图片文件

为了优化网站,需要做静态化和,图片分离

暂时想到的方式是:

1,php//input  流方式上传到远程服务器

2,阿里云oss收费服务

3,curl上传图片

4,phpftp上传图片

5, 服务器同步文件夹,定时同步图片

下面先来个curl的原理

<!--test.com/index.html 提交页面-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
<form action="add.php" method="post" enctype="multipart/form-data">
    <input type="file" name="img">
    <input type="text" name="val" value="test_val">
    <input type="submit" value="submit">
</form>
</body>
</html>
//test.com/add.php
//发送图片
header('content-type:text/html;charset=utf8');

$ch = @curl_init();
//加@符号curl就会把它当成是文件上传处理
$data = array('img'=>'@'. dirname(__FILE__).'/test2.jpg');

//下面的@是为了屏蔽错误输出,如果不加的话,也能上传成功,不过会报
//Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. 这是版本问题,如果要彻底解决,看文章下面的参考文章。

@curl_setopt($ch,CURLOPT_URL,"http://test2.com/file.php");
@curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
@curl_setopt($ch,CURLOPT_POST,true);
@curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
@$result = curl_exec($ch);
@curl_close($ch);
echo json_decode($result);
//test2.com/file.php
//接收图片
if($_FILES){
 $filename = time().'-'.$_FILES['img']['name'];
 $tmpname = $_FILES['img']['tmp_name'];
 if(move_uploaded_file($tmpname,dirname(__FILE__).'/upload/'.$filename)){
  echo json_encode('上传成功');
 }else{
  $data = json_encode($_FILES);
  echo $data;
 }
}

 参考:http://blog.csdn.net/cyuyan112233/article/details/21007163

如果想用php流的方式发送,但是图片和表单值一起的时候就比较不方便,而且不过表单属性设置了enctype="multipart/form-data"是流是接收不到的

参考:http://www.nowamagic.net/academy/detail/12220523

posted @ 2016-01-13 16:46  Lion_coder  阅读(2314)  评论(0编辑  收藏  举报