栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

day02

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

day02

文件上传下载 文件上传下载定义:

上传:浏览器将本地的文件上传到服务器,交给服务器保存

下载:把服务器保存的内容下载到本地

上传
  1. 文件上传必须是post类型的表单提交
  2. 文件上传要设置enctype(application/X-www-from-urlencoded默认,multipart、from-data文件上传用的)
  3. 普通表单上传的数据ey:username=?&password=?     
  4. 文件上传的表单的数据:request.getParameter()不行
分隔符

部件一头信息

空行

部件一的内容

分隔符

部件二头信息

空行

部件二的内容

分隔符...

!服务器在同一个项目里面不允许多个Servlet映射同一个路径

文件上传步骤
  1. 导包(commons-fileupload-1.2.1.jar commons-io-2.0.jar )
  2. 调方法
//判断当前请求是否一个文件上传请求
boolean b = ServletFileUpload.isMultipartContent(request);
if(b){
//创建一个FileItem工厂
FileItemFactory factory = new DiskFileItemFactory();
//创建一个ServletFileUpload
ServletFileUpload upload = new ServletFileUpload(factory);
//把文件上传请求解析后形成一个表单的详细信息
List list = upload.parseRequest(request);

}

解析每一个表单项内容

for(FileItem fileItem : items){
if(fileItem.isFormFiled()){
sout(表单提交的key+fileItem.getFieldName())
sout(表单提交的value+fileItem.getString())

}
}else{
sout(表单提交的key+fileItem.getFieldName())
sout(上传的文件名+fileItem.getName())
sout(文件信息的大小+fileItem.getSize())
//获取到文件流的并保存到某个地方
InputStream is = fileItem.getInputStream;
OutputStream os = new FileOutputStrean("保存路径"+fileItem.getName)
IOUtils.copy(is,os)
os.close
is.close
 

}

在jsp页面展示上传的图片

1.导包

2.预解析

3.处理文件上传

for(FileItem.isFromItem){

}else{
    //把文件保存在当前项目的文件夹中
    InutStream is = fileItem.getInputStream();
    //new FileOutputStream(file)
    //细节一获取某个文件或者文件夹在服务器中的真实路径
    //一个项目对应一个ServletContext
    ServletContext servletContext = request.getServletContext();
    String realPath = servletContext.getRealPath("/文件夹名")
    //细节二Ie下获取的文件名带路径
 
//另一种方法
int lastIndexOf = fileItem.getName().lastIndexOf("\)
fileName = fileItem.getName.subString(lastIndexOf+1)
//细节三为防止同名文件覆盖加UUID
fileName = UUID.randomUUID().toString().replace("-","")+fileName
    //路径加文件名
    FileOutputStream os = new FileoutputStream(realPath+"/"+fileName)
    IOUtils.copy(is,os)
    os.close
    is.close
//每上传一次添加一次路径

addImgPath("/文件名(保存的文件夹的名称)/"+fileName)

    

}

4.展示图片列表

//将上传的文件路径保存在域中获取
可以写一个工具类
保存所有的图片路径
priivate static List paths = new ArrayList();
添加图片路径
pubic static void addImgPath(String path){
paths.add(path);
}
获取所有图片路径
pubic static List getAllpath(){
return paths;
}

jsp页面


        

文件下载
  1. 错误的将文件交给浏览器(直接将流交给浏览器 ,浏览器有默认行为,认识的打开,不认识的下载)
  2. //找到图片的真实路径
    ServlerContext context = getServletContext();
    String realPath = context.getRealPath("文件名");
    //获取要下载的文件的值
    FileInputStream is  = new FileInputStream(realPath);
    //将这个输入流写给浏览器
    ServletOutputStream os = response.getOutputStream()
    //输入刘写给输出流
    IOUtils.copy(is,os);
    os.close;
    is.close;

  3. 正确的交给浏览器(命令浏览器,不要打开,直接下载,在响应头中告诉浏览器)
  4. String file = request.getParameter("file")
    //找到图片的真实路径
    ServlerContext context = getServletContext();
    String realPath = context.getRealPath(file);
    //获取要下载的文件的值
    FileInputStream is  = new FileInputStream(realPath);
    //获取文件名
    int length = UUID.randomUUID().toString().replace("-","");
    int lastIndexOf = file.lastIndexOf("/");
    String fileName = filesubString(lastIndexOf+1)
    filename = filename.substring(length)
    //解决中文乱码
    String string = new String(filename.get("GBK"),"ISO-8859-1");
    
    
    //设置响应头(设置附件,浏览器会下载)
    response.setHeader("Content-Disposition","attachment;filename=filename");
    //将这个输入流写给浏览器
    ServletOutputStream os = response.getOutputStream()
    //输入刘写给输出流
    IOUtils.copy(is,os);
    os.close;
    is.close;

    jsp页面


        
        下载此图片

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号