如何使用JSP和Servlet上传图像。我使用以下代码在JSP页面中获取图像:
<p>File: <input type="file" name="file_to_upload"> </p>
现在我想知道如何获取这些文件以及如何将它们保存在特定目录中?我将该文件夹命名为“images”,我想将我上传的所有文件放在该文件夹中。当我重新启动服务器或刷新页面时,实际上会保存图像。
我怎样才能做到这一点?
答案 0 :(得分:2)
要使用JSP上传文件,您必须处理multipart / form-data请求。
我知道这样做的最简单方法是使用apache commons fileupload,详见此处http://www.javacodegeeks.com/2013/08/file-upload-example-in-servlet-and-jsp.html
PS。教程有点不对劲: - )
index.jsp必须包含类似
的内容<form action="upload" method="post" name="uploadForm" enctype="multipart/form-data">
<input name="uploadfile" type="file" size="50″>
<input name="submit" type="submit" value="Submit">
</form>
答案 1 :(得分:1)
使用上传文件的表格必须是'enctype =“multipart / form-data”'。
<%@ page language="java" pageEncoding="gb2312"%>
<%@ page import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*"%>
<%@ page import="mainClass.*" %>
<html>
<head>
<title>My JSP 'uploadimage.jsp' starting page</title>
</head>
<body>
<%
SmartUpload sma=new SmartUpload();
long file_max_size=4000000;
String filename1="",ext="",testvar="";
String url="uploadfiles/";
sma.initialize(pageContext);
try
{
sma.setAllowedFilesList("jpg,gif");
sma.upload();
}catch(Exception e){
%>
<script language="jscript">
alert("only jpg,gif allowed to upload!")
window.location.href="upfile.jsp"
</script>
<%
}
try{
com.jspsmart.upload.File myf=sma.getFiles().getFile(0);
}else{
ext=myf.getFileExt();
int file_size=myf.getSize();
String saveurl="";
if(file_size < file_max_size){
Calendar cal=Calendar.getInstance();
String filename=String.valueOf(cal.getTimeInMillis());
saveurl=request.getRealPath("/")+url;
saveurl+=filename+"."+ext;
myf.saveAs(saveurl,sma.SAVE_PHYSICAL
);
myclass mc=new myclass(request.getRealPath("data/data.mdb"));
mc.executeInsert("insert into [path] values('uploadfiles/"+filename+"."+ext+"')"); out.println("ok!");
response.sendRedirect("showimg.jsp");
}
}
}catch(Exception e){
e.printStackTrace();
}
%>
</body>
</html>
当您想要显示文件时,您应该在项目中编写文件路径,因此不要将文件保存在其他地方,这会在您的服务器想要找到它时遇到麻烦。
第一个回答问题,所以你明白......
答案 2 :(得分:0)
我认为处理文件上传(以及多部分/表单数据请求)的最佳方法是使用Apache common file upload
它提供了许多有用的类来帮助管理文件上传事宜。