我们能运用PrintWriter实现在Sevlet上传html代码至浏览器,上传图片同理。
代码:
package cn.jxufe.test;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownImage extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String path = this.getServletContext().getRealPath("/WEB-INF/classes/7.jpg");
InputStream input = new FileInputStream(path);
OutputStream output = response.getOutputStream();
byte[] b = new byte[64];
int count = -1;
while((count = input.read(b))!=-1){
output.write(b, 0, count);
}
input.close();
output.close();
}
}
在这里我们可以运用字节流将图片上传!

这里的路径是类似于:tomcat安装目录/webapps/项目名/WEB-INF/classes/文件名
当然这里的图片是放在src目录下的

相对于tomcat服务器中webapps文件夹下的/classes文件夹下!
这里看看文件夹结构和webapps的文件结构的对比:




可以看出图片上面两个是包名,包里面是java文件对应的class文件!
当给web项目配置了服务器,就会自动将web项目的文件夹下的WebRoot文件夹复制到tomcat安装目录下的webapps文件夹下,然后在复制文件夹的WEB-INF 文件夹下新建一个classes文件夹作为servlet.java字节码文件的目地文件夹,而ServletContext就类似于一整个项目的上下文,即整个WebRoot文件夹。
如果想用户直接在这个网页下载文件:可以加上
response.setHeader("content-disposition", "attachment;filename="+path);

response.setHeader("content-type", "image/jpeg");

两行代码!当访问时就会直接出现下载选项!

网友评论