最近要做一个FLASH里修改图片,合成图片,然后将图片保存到服务器
(有点在线版美图秀秀那个拼图功能)拿到工程师给的之前的PHP代码
看到$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来说一切都是流。