java读取FLASH传过来的图片流

最近要做一个FLASH里修改图片,合成图片,然后将图片保存到服务器

(有点在线版美图秀秀那个拼图功能)拿到工程师给的之前的PHP代码

<?php
 
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
	// get bytearray
	$n=$_REQUEST['num'];
	$jpg = $GLOBALS["HTTP_RAW_POST_DATA"];
 
	// add headers for download dialog-box
	header('Content-Type: image/jpeg');
	header("Content-Disposition: attachment; filename=".$_GET['name']);
	echo $n;
	$fp = fopen('uploads/'.$n.'.jpg', 'wb' );//打开文件准备写入
  	fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );//写入
  	fclose( $fp );//关闭
 
}
 
?>

看到$GLOBALS 这个方法,就隐约知道php还有个类似post,get功能的接受函数

小翻了一下,一个博客如何说的

http://blog.sina.com.cn/s/blog_4657e98e0100dyxp.html
这两天在做WEB SERVICE,想详细了解一下soap提交的数据,于是把$_SERVER和$_REQUEST两个数组全打在日志里,但就是没有看见POST的内容.没法只得找了个本地抓包软件抓了下.想了一下肯定是$_REQUEST或$_POST数组都是解析过的数据,对于非a=b方式的数据无法解析,所以是空的!
今天在看XMLRPC的一文章时(http://www.programfan.com/article/2944.html),发现了 $HTTP_RAW_POST_DATA 这个变量能取到post的内容.网上有文章如下介绍

The RAW / uninterpreted HTTP POST information can be accessed with: $GLOBALS[‘HTTP_RAW_POST_DATA’] This is useful in cases where the post Content-Type is not something PHP understands (such as text/xml).
意思是,由于PHP默认只识别application/x-www.form-urlencoded标准的数据类型,因此,对型如text/xml的内容无法解析为$_POST数组,故保留原型,交给$HTTP_RAW_POST_DAT来接收。

上面的代码完全可以用
其实如果这么简单,我就可能不研究那么多了。结果说客户机器是用java的,不用php

java读取FLASH传来的图片流

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
long time = System.currentTimeMillis();
 
InputStream inputStream = request.getInputStream();
//此处为保存图片地址
String local = "D:\\"
 + time + ".jpg";
String remote = basePath + time + ".jpg";
 
System.out.println("local = " + local);
System.out.println("remote = " + remote);
 
try{
FileOutputStream outputStream = new FileOutputStream(local);
 
int v = -1;
 byte [] bytes = new byte[4096];
        while((v=inputStream.read(bytes))>0)
        {
            outputStream.write(bytes,0,v);   
        }
        outputStream.close();
        inputStream.close();
        }catch(Exception e){
        	out.print("0");
        	return;
        }
out.print(basePath + time + ".jpg");
%>

getInputStream 读取传来的流。java里比较明显,对java来说一切都是流。


This entry was posted in JAVA and tagged , , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/java-read-flash-jpg/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.
2020.03.24 评论已经全局关闭,有事加QQ聊天