二进制流 ajax 实现图片上传

ajax图片上传
  
 
//获取整个form表单的id;
var upload = document.getElementById('uploadForm');
//jquery发送FormData
var  fb = new FormData(upload);

//如果追加一个
fb.append('demo','this is a demo');

$.ajax({
      url: "?r=weather/img",
      type: "POST",
      data: image,
      dataType: 'json', //以jsonp类型返回
      processData: false, //告诉jquery不要发送数据
      contentType: false, //不要射中content-type
});

  php

//如果采用二进制流的形式上传图片
//需要在相应的控制器中获取
$tmp_name = $_FILES['img']['tmp_name'];
//然后采用
$path = file_get_contents($tmp_name); //获取临时文件的路径,并解析称为字符串的形式
//为了安全起见,对路径进行加密
$image = base64_encode($path);
//在  file_get_contens  和   base64_encode 之间 可能会丢失一些数据 ,所以在base64_decode之前 要进行匹配 ,要不然会导致数据不正确
 $path = str_replace (' ','+',$image);
$image = base64_decode($path); //解密
file_put_contents('./123.png',$image); //放入到文件中,现在则是图片啦
 
//然后 根据自己的需要可以入库。。。。
posted @ 2017-03-23 16:53  施公子的二十七杯酒  阅读(2755)  评论(0编辑  收藏  举报