请教各位
服务器有一个servlet接收post请求post中 存在 文本字段 还有一个 图片的二进制流我想问一下 正常的接收字段request.getParameter("");
那如果跟二进制流一起 post过来 该如何处理 谢谢啦
服务器有一个servlet接收post请求post中 存在 文本字段 还有一个 图片的二进制流我想问一下 正常的接收字段request.getParameter("");
那如果跟二进制流一起 post过来 该如何处理 谢谢啦
解决方案 »
- query.setParameter总是提示越界异常
- jsp request 参数值 丢失
- 接口访问监控问题
- jspsmartload文件上传问题
- 如何实现在长连接中定期发送心跳,并且监测服务端同时向客户端发送的心跳
- 使用监听器统计在线会员,event.getSession().getId()抛出例外Session already invalidated
- 我把tomcat服务启动打开JSP页面就出错,关掉服务手动start tomcat就没问题
- APPLET基础问题!
- 请教:下载的mysql数据库驱动程序mm.mysql-2.0.4-bin.jar应该放在哪个目录下?如何定位?
- 救命,高分:我用date()得到的时间'Fri Mar 15 14:30:54 CST 2002'怎么以‘2/15/2003 12:16:49‘这种格式存到oracle里呢?
- 导进myeclipse里面的项目的JSP的图标有两种显示,怎么回事
- 在java连接数据库写SQL语句太长错误?
ServletInputStream in = request.getInputStream();
byte[] buf = new byte[4048];
int len = in.readLine(buf, 0, buf.length); // 取出第一行
String f = new String(buf, 0, len - 1);
while ((len = in.readLine(buf, 0, buf.length)) != -1) {
我这边是一个servlet
那边需要一起传递多个数据过来 文本的字段 和 一个图片
所以不知道如何做
楼主可以使用上传组件的Request来接收数据!而不是httpServletReuqest 来做!
说明书:
SmartUpload对象的getRequest()方法获取com.jspsmart.upload.Request对象,通过该对象获取表单中的其他信息!
这个对象提供了采用的方法:getParameter(String name)
getParameterValues(String name)你试试吧!
ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream());
//封装用于接收的对象输入流
InputStream in = (InputStream)request.getInputStream();
//byte[] data = InputStreamUtils.InputStreamTOByte(in);
//ObjectInputStream obj = new ObjectInputStream(InputStreamUtils.byteTOInputStream(data));
ObjectInputStream oo = new ObjectInputStream(in);
Object model = oo.readObject();
//Object model = obj.readObject();
Message msg=(Message)model;
试试
package com.socket;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.PrintWriter;
import java.net.Socket;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ImgClient01 extends JFrame {
JButton button;
JPanel panel;
int count = 0;
BufferedImage image;
public ImgClient01() {
setSize(300, 400);
button = new JButton("获取图像");
add(button, BorderLayout.NORTH);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
try {
Socket s = new Socket("localhost", 8889);
PrintWriter out = new PrintWriter(s.getOutputStream());
out.print("a");
DataInputStream in = new DataInputStream(s.getInputStream());
byte[] b = new byte[1024];
ByteArrayOutputStream bout = new ByteArrayOutputStream();
int length = 0;
while ((length = in.read(b)) != -1) {
bout.write(b, 0, length);
}
ByteArrayInputStream bin = new ByteArrayInputStream(bout
.toByteArray());
image = ImageIO.read(bin);
repaint();
ImageIO.write(image, "gif", new File("output-" + count
+ ".gif"));
count++;
s.close();
} catch (Exception e) {
}
}
});
panel = new JPanel();
add(panel);
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawImage(image, 20, 20, 300, 150, null);// image为BufferedImage类型
}
public static void main(String[] args) throws Exception {
ImgClient01 frame = new ImgClient01();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}Server端代码
package com.socket;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.net.ServerSocket;
import java.net.Socket;
import javax.imageio.ImageIO;
public class ImgServer01 {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(8889);
System.out.println("服务器开启连接...端口为8889");
Socket s = server.accept();
while (true) {
System.out.println("一客户端连接服务器,服务器传输图片...");
DataOutputStream dout = new DataOutputStream(s.getOutputStream());
BufferedImage image = ImageIO.read(new File("1.gif")); // 读取1.gif并传输
ByteArrayOutputStream out = new ByteArrayOutputStream();
boolean flag = ImageIO.write(image, "gif", out);
byte[] b = out.toByteArray();
dout.write(b);
s.close();
System.out.println("图片传送完毕,服务器开启连接...端口为8889");
s = server.accept();
}
}
}开两个工作空间 先运行service,在运行client,使用socket做的一个传输,但是图片转换的原理是一样的。下面这段代码 应该可以帮助到你,下面是取得一个file,你的应该是接受到的一个request请求,获取到他的inputstream流,在包装下,转换成byte数组。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream inputStream = new BufferedInputStream(new FileInputStream(new File(defaultUrl)));
try{
byte[] ioBuffer = new byte[1024];
int readLen = inputStream.read(ioBuffer);
while (-1 != readLen) {
baos.write(ioBuffer, 0, readLen);