jsp上传了xls文件。Servlet这边怎么接收?详情看下面代码
jsp代码。点确定form提交到了<formaction="upload.do?params=<%=request.getAttribute("params")%>">…...
jsp代码。点确定 form提交到了
<form action="upload.do?params=<%=request.getAttribute("params") %>" >
……
<tr>
<td>
<input type="file" name="uploadFile" id="uploadFile" value=""/></br>
</td>
</tr>
java代码
ActionServlet extends HttpServlet{
sercvice(……)……{
……
……
if(action.equals"upload"){
String params=request.getParameter("params");//可以取到参数
//下面这句该怎么写,才能获取到页面上传的excel.xls文件
//不是获取文件名,是获取文件
FileObject uploadFile=(FileObject) request.getAttribute("uploadFile");
我前台一定要用 FileObject 接收
}
}
} 展开
<form action="upload.do?params=<%=request.getAttribute("params") %>" >
……
<tr>
<td>
<input type="file" name="uploadFile" id="uploadFile" value=""/></br>
</td>
</tr>
java代码
ActionServlet extends HttpServlet{
sercvice(……)……{
……
……
if(action.equals"upload"){
String params=request.getParameter("params");//可以取到参数
//下面这句该怎么写,才能获取到页面上传的excel.xls文件
//不是获取文件名,是获取文件
FileObject uploadFile=(FileObject) request.getAttribute("uploadFile");
我前台一定要用 FileObject 接收
}
}
} 展开
展开全部
前台部分代码:
<form name="buildform" id="buildform" action=" " enctype="multipart/form-data" method="post">
<table>
<tr>
<td colspan="" class="label">文件上传:</td>
<td class="label" align="left">
<div id="d">
<input type="file" name="fileurl" value="" />
</div>
</td>
</tr>
</table>
后台部分代码java:
// 创建一个文件上传的工厂实例
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置文件缓存地址和缓存大小
factory.setRepository(new File(request.getRealPath("/")));
factory.setSizeThreshold(1024 * 1024 * 20);
// 用上工厂实例创建一个上传文件对象
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("gbk");
String name = "";
String code = "";
String sredate = "";
String ssetdate = "";
String setworker = "";
String reworker = "";
String memo = "";
String contents = "";
Long redptid = null;
Long setdptid = null;
String fileurl = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date setdate = null;
Date revisedate = null;
// 处理页面传过来的表单项
int k = 0;
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
// 遍历所有的表单项
for (int i = 0; i < items.size(); i++) {
FileItem item = (FileItem) items.get(i);
// 如果这个表单是普通表单域
if (item.isFormField()) {
// 取得表单名
String formname = item.getFieldName();
if(formname.equals("name")){
name = item.getString("gbk");
}else
if(formname.equals("code")){
code = item.getString("gbk");
}else
if(formname.equals("revisedate")){
sredate = item.getString("gbk");
if(!sredate.equals("")){
revisedate = sdf.parse(sredate);
}
}else
if(formname.equals("setdate")){
ssetdate = item.getString("gbk");
if(!ssetdate.equals(""))
setdate = sdf.parse(ssetdate);
}else
if(formname.equals("redptid")){
String s_redptid = item.getString("gbk");
if(!s_redptid.equals("x"))
redptid = Long.parseLong(s_redptid);
}else
if(formname.equals("setdptid")){
String s_setdptid = item.getString("gbk");
if(!s_setdptid.equals("x"))
setdptid = Long.parseLong(s_setdptid);
}else
if(formname.equals("setworker")){
setworker = item.getString("gbk");
}
/*// 取得表单的value值
String formvalue = item.getString("gbk");*/
}
// 如果是文件域
else {
k++;
// 取得文件域的表单域名
String fieldName = item.getFieldName();
// 取得文件名
String fileName = item.getName();
// 取得文件类型
String contentType = item.getContentType();
// 对于上传文件的存放地址来建立一个输出流
FileOutputStream fos = new FileOutputStream(request
.getRealPath("/")+"uploadimg/" + imgName);
// 判断上传文件是否在缓存中
if (item.isInMemory()) {
// 得到上传文件输入流
InputStream is = item.getInputStream();
byte[] buffer = new byte[1024];
int len;
// 将上传文件写入服务器文件中
while ((len = is.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
is.close();
fos.close();
}
}
}
}
<form name="buildform" id="buildform" action=" " enctype="multipart/form-data" method="post">
<table>
<tr>
<td colspan="" class="label">文件上传:</td>
<td class="label" align="left">
<div id="d">
<input type="file" name="fileurl" value="" />
</div>
</td>
</tr>
</table>
后台部分代码java:
// 创建一个文件上传的工厂实例
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置文件缓存地址和缓存大小
factory.setRepository(new File(request.getRealPath("/")));
factory.setSizeThreshold(1024 * 1024 * 20);
// 用上工厂实例创建一个上传文件对象
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("gbk");
String name = "";
String code = "";
String sredate = "";
String ssetdate = "";
String setworker = "";
String reworker = "";
String memo = "";
String contents = "";
Long redptid = null;
Long setdptid = null;
String fileurl = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date setdate = null;
Date revisedate = null;
// 处理页面传过来的表单项
int k = 0;
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
// 遍历所有的表单项
for (int i = 0; i < items.size(); i++) {
FileItem item = (FileItem) items.get(i);
// 如果这个表单是普通表单域
if (item.isFormField()) {
// 取得表单名
String formname = item.getFieldName();
if(formname.equals("name")){
name = item.getString("gbk");
}else
if(formname.equals("code")){
code = item.getString("gbk");
}else
if(formname.equals("revisedate")){
sredate = item.getString("gbk");
if(!sredate.equals("")){
revisedate = sdf.parse(sredate);
}
}else
if(formname.equals("setdate")){
ssetdate = item.getString("gbk");
if(!ssetdate.equals(""))
setdate = sdf.parse(ssetdate);
}else
if(formname.equals("redptid")){
String s_redptid = item.getString("gbk");
if(!s_redptid.equals("x"))
redptid = Long.parseLong(s_redptid);
}else
if(formname.equals("setdptid")){
String s_setdptid = item.getString("gbk");
if(!s_setdptid.equals("x"))
setdptid = Long.parseLong(s_setdptid);
}else
if(formname.equals("setworker")){
setworker = item.getString("gbk");
}
/*// 取得表单的value值
String formvalue = item.getString("gbk");*/
}
// 如果是文件域
else {
k++;
// 取得文件域的表单域名
String fieldName = item.getFieldName();
// 取得文件名
String fileName = item.getName();
// 取得文件类型
String contentType = item.getContentType();
// 对于上传文件的存放地址来建立一个输出流
FileOutputStream fos = new FileOutputStream(request
.getRealPath("/")+"uploadimg/" + imgName);
// 判断上传文件是否在缓存中
if (item.isInMemory()) {
// 得到上传文件输入流
InputStream is = item.getInputStream();
byte[] buffer = new byte[1024];
int len;
// 将上传文件写入服务器文件中
while ((len = is.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
is.close();
fos.close();
}
}
}
}
追问
答非所问啊。你,
其实我只需要一行代码。就是怎么用 FileObject 来获取页面传来的文件
展开全部
楼主试试下面的方法看
MultipartHttpServletRequest multipartHttpservletRequest=(MultipartHttpServletRequest) request;
MultipartFile multipartFile = multipartHttpservletRequest.getFile("uploadFile");
//获取上传文件名称
String fileName = multipartFile.getOriginalFilename();
MultipartHttpServletRequest multipartHttpservletRequest=(MultipartHttpServletRequest) request;
MultipartFile multipartFile = multipartHttpservletRequest.getFile("uploadFile");
//获取上传文件名称
String fileName = multipartFile.getOriginalFilename();
追问
我不要获取文件名,要用 FileObject 来接收获取的文件。
追答
如果楼主用file上传的,可以参考下面的步骤,如果是用fileObject这个我太清楚,你搜搜api吧
设置文件目录如String filePath = "D:\temp";
设置文件名String fileName=filePath+multipartFile.getOriginalFilename();
如果想要文件,利用File file = new File(fileName) 创建文件
如果想直接上传到服务器上那么就用
File path = new File(filePath);
path.mkdirs();
fileOutputStream=new FileOutputStream(filePath);
fileOutputStream.write(multipartFile.getBytes());
fileOutputStream.flush();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
获取文件,需要用到上传/下载组件,比如用SmartUpload,获取页面上传的excel.xls文件:
SmartUpload su = new SmartUpload();//新建一个SmartUpload对象
su.getRequest().getParameterValues();取数组值,因为文件流都是2进制,然后再用文件流写成文件即可。
更多追问追答
追问
能把从获取文件,到封装成 FileObject 类型的文件,代码给一下吗
追答
try{
String[] result = su.getRequest().getParameterValues();
FileOutputStream fo = new FileOutputStream(new FileObject());
for(int i = 0 ; i < result.length ; i ++)
fo.write(Integer.parseInt(result[i]));//这个流转换你看如果是二进制数的话,就把它转换成byte
fo.flush();
fo.close();
}catch(IOException e){
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询