为了优化网站,需要做静态化和,图片分离
暂时想到的方式是:
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