毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> WEB开发 >> 正文

ajax读取图片字节流后如何在指定路径还原输出

更新时间:2015-12-19:  来源:毕业论文

最近遇到一个挺难的问题,通过Ajax发送Post请求,从服务器读取图片后,通过response的输出流输出,虽然已经正确地获取了图片,也已获得了输出流,但是在通过Ajax展示的时候没能正确的展现

OutputStream outstr = response.getOutputStream();
BufferedOutputStream bufferOut = new BufferedOutputStream(outstr);
 
InputStream inStr = dao.readFile(savePath + imagePath, 0);
BufferedInputStream bufferIn = new BufferedInputStream(inStr);
 
byte[] buffer = new byte[4096];
int size = bufferIn.read(buffer);
while(size != -1){
    bufferOut.write(buffer, 0, size);
    size = bufferIn.read(buffer);
}
System.out.println("read files pass");
bufferIn.close();
bufferOut.flush();
bufferOut.close();

function showImages(){
        var filePath = $("#imagePath").val();
        $.ajax({type: "post",        //使用post方法访问后台
            dataType: "text",         //返回text格式的数据,(这里存在疑问,Java部分是response输出流,这里应该指定什么样的数据类型)
            url: http+"select.pic",    //要访问的后台地址,这里是servlet的地址
            data:{"filePath":filePath},   //要发送的数据
            success: function(data){//data为返回的数据,在这里做数据绑定
                       $("#images").attr("src", "data:image/gif;base64," + data);
                           alert("complete!");
        });
    }

由 $("#images").attr("src", "data:image/gif;base64," + data); 可知
data 应该是 base64 编码后的数据
所以 dataType: "text" 是正确的

对 java 不是很熟悉,但
bufferOut.write(buffer, 0, size);
显然是直接输出了图片数据,那么 base64 编码在哪里进行呢?
System.out.println("read files pass");
又把一个字符串附加在输出中,这难道不会影响到图片的解析吗?
<?php
if($_POST) {
  echo base64_encode(file_get_contents('../'.$_POST['img'])); //读取图片数据并作base64编码
  exit;
}
?>
<img id='images' src=''>
<script src=/scripts/jquery-1.8.3.min.js></script>
<script>
$(function() {
  $.post('<?=$_SERVER['PHP_SELF']?>', {img:'03.gif'}, function(data) {
    $("#images").attr("src", "data:image/gif;base64," + data);
  });
});
</script>

虽然语言不同,但是原理是一样的

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。