首先为大家介绍相关的技术:
service方法中的两个重要参数。
ServletRequest �C 用接收用户的请求,它的作用是:
- 可获取请求头信息。
- 可设置请请求的字符编码。
- 可获得用户传递的参数。Post或get。
- 可获取远程(即访问者)的IP地址。
- 可获取输入流,如用户上传文件、相片等。
它的一个子接口:javax.servlet.http.HttpServletRequest
ServletResponse �C 用于向用户返回数据。
- 设置响应类型- contentType
- 设置编码-setCharacterEncoding
- 获取输出流。
它的一个子接口:javax.servlet.http.HttpServletResponse
文件下载技术:
文件下载技术相当于文件上传技术相对而言比较简单。我们以下载图片为例:
图片都是先浏览再下载
1.前端代码:
前台只需要一句话就可以搞定了。直接通过web.xml查找后台的程序
2.后台显示代码:
public class ShowImg extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);//为了防止异常,将doGet和doPost连接在一起
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 调出Servletcontext,当然也可以直接调用---当一一列出图片的时候需要文件的绝对路径
ServletContext context =getServletContext();String path=context.getRealPath("/imgs");//找到该文件夹的绝对路径File file =new File(path);
// 找到文件夹之后,列出所有图片供用户浏览
String files[] =file.list();
for(String fn:files){
//一个个的全部显示出来
String img="";
// out.print("下载图片");String str="下载图片";//提供下载的超链接,传参---传文件名给用户链接内容下面写out.print(str);out.print(img+"
");}}
3.文件的具体下载
首先必须设置相应的协议。下载协议就需要设置相应的下载头
response.setContentType("application/force-download");//设置相应头
下载的时候需要显示当前图片的文件名,需要从前台获取,并且从下载获得之后写到前台去
OutputStream out=response.getOutputStream();//获得输出流
String name=request.getParameter("name");//从客服端传过来的参数名
int num=name.lastIndexOf("/");
String aa=name.substring(num+1);
aa=URLEncoder.encode(aa, "UTF-8");//若是中文需要重新编码
//System.out.println(aa);
response.setHeader("Content-Disposition","attachment;filename='"+aa+"'");//获取从那边传过来的文件名,以便于存储的时候为下载用户名
进行具体的下载
String filename=this.getServletContext().getRealPath(name);//获得绝对路径,传文件名过来,同时传了可以获得的绝对路径就可以进行读可写了
InputStream in=new FileInputStream(filename);
byte[] b=new byte[1024];
int len=0;
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
效果图:
点击之后的效果图:
传文件名不一样
文件上传技术
文件上传要是自己去写会很麻烦,所以我们可以用别人的包,下载链接点击打开链接
表单:
客户端发送HTTP必须使用multipart/form-data数据类型,表示复合数据类型。
即: