当前位置: 技术问答>java相关
Servlet实现文件上传,如何获得form中非文件对象的值???(具体见内)
来源: 互联网 发布时间:2015-11-18
本文导语: 我仿照smartupload的方法,实现将文件上传至数据库表blob字段。 直接上传可以成功。 但是,我现在需要将form的一个对象传进去,如: 由于采用的是二进制流的方式提交, 所以request里面得到的都是二进制流信息,直...
我仿照smartupload的方法,实现将文件上传至数据库表blob字段。
直接上传可以成功。
但是,我现在需要将form的一个对象传进去,如:
由于采用的是二进制流的方式提交,
所以request里面得到的都是二进制流信息,直接通过
String action = requset.getParameter("action");得到的action为null
我仔细研究了一下samrtupload里面关于dataheader的处理,有点烦琐
所以,想问问有经验的ggjjddmm,有无简单一点的处理方法,通过对request的读取数据转换什么的,将这个request的二进制流转成普通的字符串?
反正,只要能得到action对象的value即可!!!!
高分请教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
直接上传可以成功。
但是,我现在需要将form的一个对象传进去,如:
由于采用的是二进制流的方式提交,
所以request里面得到的都是二进制流信息,直接通过
String action = requset.getParameter("action");得到的action为null
我仔细研究了一下samrtupload里面关于dataheader的处理,有点烦琐
所以,想问问有经验的ggjjddmm,有无简单一点的处理方法,通过对request的读取数据转换什么的,将这个request的二进制流转成普通的字符串?
反正,只要能得到action对象的value即可!!!!
高分请教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
我觉得你还不如判断content type是不是multipart/form-data开头不是更简单一些吗?
ServletRequest.getContentType();
ServletRequest.getContentType();
|
稍等
|
String destid = mySmartUpload.getRequest().getParameter("destid");
String serviceid = mySmartUpload.getRequest().getParameter("serviceid");
String msg = mySmartUpload.getRequest().getParameter("msg");
给分吧,大哥~
String serviceid = mySmartUpload.getRequest().getParameter("serviceid");
String msg = mySmartUpload.getRequest().getParameter("msg");
给分吧,大哥~
|
那就要自己写这个方法了,
我觉得是没有别的办法,我也来关注一下吧
我觉得是没有别的办法,我也来关注一下吧
|
资料我给你发过去了,你收一下。/
目前还没有好的办法都要自己分析。
目前还没有好的办法都要自己分析。
|
原来是这个意思是
|
把ServletInputStream 分行读到缓冲区内,再输出,看看有file对象时的ServletInputStream 构成。
表单上的对象以字符形式输出的结构大体如下(假设要取得的参数名为height):
...
name="height" //名字
//一个空行
89 // 值
...
ServletInputStream sis = null;//input stream
byte[] b = new byte[4096];//the size of buffer
sis = request.getInputStream();
int a = 0;
int k = 0;
if((k = s.indexOf("name="height"")) != -1)定位到name="height" 这一行
{
sis.readLine(b,0,b.length); //去掉中间的空行
a=sis.readLine(b,0,b.length); //定位到值(89) 这一行
s = new String(b,0,a);
height=s.trim();//得到值为"89"的字符串
}
我也遇到过这样的问题,就是这么解决的!但可能还有简单的方法!
表单上的对象以字符形式输出的结构大体如下(假设要取得的参数名为height):
...
name="height" //名字
//一个空行
89 // 值
...
ServletInputStream sis = null;//input stream
byte[] b = new byte[4096];//the size of buffer
sis = request.getInputStream();
int a = 0;
int k = 0;
if((k = s.indexOf("name="height"")) != -1)定位到name="height" 这一行
{
sis.readLine(b,0,b.length); //去掉中间的空行
a=sis.readLine(b,0,b.length); //定位到值(89) 这一行
s = new String(b,0,a);
height=s.trim();//得到值为"89"的字符串
}
我也遇到过这样的问题,就是这么解决的!但可能还有简单的方法!