想要获取本地图片,可以通过JSP中的文件上传功能实现。下面是具体的步骤:
步骤一、在JSP页面中添加form表单,用来上传图片文件。
<form method="post" enctype="multipart/form-data" action="upload.jsp">
<input type="file" name="image" />
<input type="submit" value="上传" />
</form>
在form表单中,指定了method为post,enctype为multipart/form-data,以便支持文件上传。同时添加了文件上传的input标签,其中name属性为"image",用来指定上传的文件名。最后,通过submit按钮来实现文件上传。
步骤二、在后端的上传处理页面upload.jsp中,获取上传文件的信息。
<%
String fileName = request.getPart("image").getSubmittedFileName(); //获取上传文件的文件名
String savePath = request.getServletContext().getRealPath("/images/"); //获取服务器真实目录,以便保存文件
File file = new File(savePath, fileName); //创建文件对象
request.getPart("image").write(savePath + File.separator + fileName); //将上传文件保存至服务器
%>
在upload.jsp页面中,通过request.getPart("image")获取上传的文件信息,其中"image"与前面form表单中input标签的name属性一致。通过getSubmittedFileName()方法获取上传文件的文件名。然后,通过getServletContext().getRealPath("/images/")获取服务器真实目录,计算出要保存文件的完整路径,并创建对应的文件。最后,将上传的文件内容写入到该文件中。
步骤三、在JSP页面中使用img标签来显示上传的图片。
<img src="<%=request.getContextPath()%>/images/<%=fileName%>" />
通过img标签的src属性来指定图片的地址,其中<%=request.getContextPath()%>表示获取当前应用的根路径,<%=fileName%>表示获取上传图片的文件名。将它们拼接起来,就可以获取到上传的图片并在浏览器中显示出来。
至此,我们已经完成了通过JSP获取本地图片的整个过程。
示例一:上传多个图片并在页面上展示出来
<form method="post" enctype="multipart/form-data" action="upload.jsp">
<input type="file" name="image" multiple />
<input type="submit" value="上传" />
</form>
在form表单中,将上传文件的input标签的multiple属性设置为true,就可以上传多个文件。
<%
String savePath = request.getServletContext().getRealPath("/images/"); //获取服务器真实目录,以便保存文件
Collection<Part> parts = request.getParts(); //获取上传文件的集合
for (Part part : parts) {
String fileName = part.getSubmittedFileName(); //获取上传文件的文件名
File file = new File(savePath, fileName); //创建文件对象
part.write(savePath + File.separator + fileName); //将上传文件保存至服务器
%>
<img src="<%=request.getContextPath()%>/images/<%=fileName%>" />
<%
}
%>
获取上传文件的信息时,使用request.getParts()方法获取上传文件的集合,然后遍历集合,依次获取每个上传文件的信息,并保存到服务器中。在文件保存之后,使用img标签展示上传的图片。
示例二:上传文件的大小和类型限制
<form method="post" enctype="multipart/form-data" action="upload.jsp">
<input type="hidden" name="MAX_FILE_SIZE" value="10485760" /> <!-- 设置最大上传文件大小为10M -->
<input type="file" name="image" accept="image/*" /> <!-- 限制上传文件类型为图片 -->
<input type="submit" value="上传" />
</form>
在form表单中,使用hidden标签设置最大上传文件大小为10M,使用input标签的accept属性限制上传文件类型为图片。
<%
String savePath = request.getServletContext().getRealPath("/images/"); //获取服务器真实目录,以便保存文件
Collection<Part> parts = request.getParts(); //获取上传文件的集合
for (Part part : parts) {
String fileName = part.getSubmittedFileName(); //获取上传文件的文件名
long fileSize = part.getSize(); //获取上传文件的大小
String fileType = part.getContentType(); //获取上传文件的类型
if(fileSize <= 10485760L && fileType.startsWith("image")) { //判断文件大小和类型是否符合要求
File file = new File(savePath, fileName); //创建文件对象
part.write(savePath + File.separator + fileName); //将上传文件保存至服务器
%>
<img src="<%=request.getContextPath()%>/images/<%=fileName%>" />
<%
}
}
%>
在获取上传文件的信息时,使用part.getSize()方法获取上传文件的大小,使用part.getContentType()方法获取上传文件的类型。判断文件大小和类型是否符合要求后,再将文件保存到服务器,并使用img标签展示上传的图片。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP 获取本地图片的实例详解 - Python技术站