curl上传图片文件

本文介绍了一种通过将图片上传到远程服务器进行分离处理的方法来优化网站加载速度的技术方案。主要探讨了使用PHP输入流、阿里云OSS服务、cURL及FTP等不同技术手段实现图片分离的具体步骤。

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

暂时想到的方式是:

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.youkuaiyun.com/cyuyan112233/article/details/21007163

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

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

转载于:https://www.cnblogs.com/findgor/p/5127751.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值