<span style="font-size:14px;"><a href="img">查找文件夹下面的所有图片</a><br/></span>
<span style="font-size:14px;">public class ShowImg extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
<span style="white-space:pre"> </span>doPost(request, response);//为了防止异常,将doGet和doPost连接在一起
}</span>
<span style="font-size:14px;">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();</span>
<pre name="code" class="html"><span style="font-size:14px;">//<span style="white-space:pre"> </span>调出Servletcontext,当然也可以直接调用---当一一列出图片的时候需要文件的绝对路径</span>
ServletContext context =getServletContext();String path=context.getRealPath("/imgs");//找到该文件夹的绝对路径File file =new File(path);
<span style="font-size:14px;">//<span style="white-space:pre"> </span>找到文件夹之后,列出所有图片供用户浏览
String files[] =file.list();
for(String fn:files){</span>
<pre name="code" class="html"><span style="font-size:14px;">//一个个的全部显示出来</span>
<span style="white-space:pre"> </span><span style="font-size:18px;"><strong>response.setContentType("application/force-download"</strong>);//设置相应头</span>
<span style="font-size:18px;"> <span style="white-space:pre"> </span>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",<span style="color:#ff0000;">"<strong>attachment;filename</strong></span>='"+aa+"'");//获取从那边传过来的文件名,以便于存储的时候为下载用户名</span>
<span style="font-size:18px;"> 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);
}</span>
<span style="font-size:18px;"><h2>上传文件</h2> <form action="UpFile" method="post" <span style="color:#ff0000;">enctype="multipart/form-data"</span> >//必须要写,不然后台没办法去接收数据 <!-- 必须添加这个enctype="multipart/form-data"--> File1<input type="file"<span style="color:#ff6666;"> name</span>="file"/><br/> 请输入名称:<input type="text" <span style="color:#ff6666;">name</span>="desc"/><br/> File2<input type="file"<span style="color:#ff6666;"> name</span>="file"/><br/> 请输入名称:<input type="text"<span style="color:#ff0000;"> name</span>="desc"/><br/> <input type="submit" value="提交"/> </form></span>
//指定临时存放位置
File f = new File("F:/ex/temp");//指定临时文件存放位置
DiskFileItemFactory ff =new DiskFileItemFactory(1024*1024*5, f);//临时文件的大小和存放位置
//创建用于解析的对象
ServletFileUpload sf =new ServletFileUpload(ff);
sf.setFileSizeMax(1024*1024*10);//仅仅允许单个存放位置最大值是 10M
sf.setSizeMax(1024*1024*20);//所有文件的最大值是20M
String path =this.getServletContext().getRealPath("/imgs");
System.out.println("存储路径:"+path);
<span style="white-space:pre"> </span>List<FileItem> list=sf.parseRequest(request);//获得从前台传过来的所有信息,前台必须填写enctype="multipart/form-data"
for(FileItem it:list){
it0=it;
//<span style="white-space:pre"> </span>若是普通表单对象--可以直接判断出
if(it.isFormField()){//是普通表单项,如 type=text里面name的值
String name=it.getString("utf-8");
System.out.println("基本表单项 name:"+name);//下面写的解释的名字
}else{
<span style="white-space:pre"> </span>// 这就是前台选择的文件名
String name=it.getName();//具体的文件路径---绝对路径
// String str=it.getString();//文件里面的内容
// System.out.println("str"+str);
String contenttype=it.getContentType();
Long size=it.getSize();
<span style="white-space:pre"> </span>System.out.println(name+","+contenttype+","+size);
<pre name="code" class="html" style="font-size: 18px;">//<span style="white-space:pre"> </span>在服务器端的资源文件名不能用中文,浏览器会自动编码-------必须要把用户上传的文件名转成没有中文的名字存储,
//为了让用户在下载时能还原出原来的名字,就要把原文件名和映射名的对应关系存储起来,在用户下载时再转换回来
<span style="font-size:14px;">package cn.hncu.UPfile;import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;
public class MyupFile extends HttpServlet {
<span style="white-space: pre;"> </span>//doGET防止有人在用户栏输入地址。没有响应
<span style="white-space: pre;"> </span>@Override
<span style="white-space: pre;"> </span>protected void doGet(HttpServletRequest req, HttpServletResponse resp)
<span style="white-space: pre;"> </span>throws ServletException, IOException {
<span style="white-space: pre;"> </span>resp.setContentType("utf-8");
<span style="white-space: pre;"> </span>Writer wr=resp.getWriter();
<span style="white-space: pre;"> </span>wr.write("暂不支持该上传方式");
<span style="white-space: pre;"> </span>}
<span style="white-space: pre;"> </span>
<span style="white-space: pre;"> </span>public void doPost(HttpServletRequest request, HttpServletResponse response)
<span style="white-space: pre;"> </span>throws ServletException, IOException {
<span style="white-space: pre;"> </span>request.setCharacterEncoding("utf-8");
<span style="white-space: pre;"> </span>response.setContentType("text/html;charset=utf-8");
<span style="white-space: pre;"> </span>PrintWriter out=response.getWriter();
<span style="white-space: pre;"> </span>//防护 以普通表单上传 法一:
<span style="white-space: pre;"> </span>//返回值 GET (null) POST1(apllication/x-form-urlencoded,普通表单) POST2(file:multipart/form-data,文件上传表单)
//<span style="white-space: pre;"> </span>String type =request.getContentType();
//<span style="white-space: pre;"> </span>if(!type.contains("mulitpart/form-data")){
//<span style="white-space: pre;"> </span>out.write("不支持普通表单的上传2");
//<span style="white-space: pre;"> </span>return ;
//<span style="white-space: pre;"> </span>}
<span style="white-space: pre;"> </span>// 法二
<span style="white-space: pre;"> </span>boolean boo=ServletFileUpload.isMultipartContent(request);
<span style="white-space: pre;"> </span>if(boo==false){
<span style="white-space: pre;"> </span>out.print("不支持普通表单的上传1");
<span style="white-space: pre;"> </span>
<span style="white-space: pre;"> </span>}
<span style="white-space: pre;"> </span>
<span style="white-space: pre;"> </span>//指定临时存放位置
<span style="white-space: pre;"> </span>File f = new File("F:/ex/temp");//指定临时文件存放位置
<span style="white-space: pre;"> </span>DiskFileItemFactory ff =new DiskFileItemFactory(1024*1024*5, f);//临时文件的大小和存放位置
<span style="white-space: pre;"> </span>
<span style="white-space: pre;"> </span>//创建用于解析的对象
<span style="white-space: pre;"> </span>ServletFileUpload sf =new ServletFileUpload(ff);
<span style="white-space: pre;"> </span>sf.setFileSizeMax(1024*1024*10);//仅仅允许单个存放位置最大值是 10M
<span style="white-space: pre;"> </span>sf.setSizeMax(1024*1024*20);//所有文件的最大值是20M
<span style="white-space: pre;"> </span>String path =this.getServletContext().getRealPath("/imgs");
<span style="white-space: pre;"> </span>System.out.println("存储路径:"+path);
<span style="white-space: pre;"> </span>//开始进行解析
<span style="white-space: pre;"> </span>FileItem it0=null;//用于在finally中进行删除临时文件
<span style="white-space: pre;"> </span>try {
<span style="white-space: pre;"> </span>List<FileItem> list=sf.parseRequest(request);//获得从前台传过来的所有信息,前台必须填写enctype="multipart/form-data"
<span style="white-space: pre;"> </span>for(FileItem it:list){
<span style="white-space: pre;"> </span>it0=it;
<span style="white-space: pre;"> </span>if(it.isFormField()){//是普通表单项,如 type=text里面name的值
<span style="white-space: pre;"> </span>String name=it.getString("utf-8");
<span style="white-space: pre;"> </span>System.out.println("基本表单项 name:"+name);//下面写的解释的名字
<span style="white-space: pre;"> </span>}else{
<span style="white-space: pre;"> </span>String name=it.getName();//具体的文件路径
//<span style="white-space: pre;"> </span>String n1=it.getFieldName();
//<span style="white-space: pre;"> </span>String str=it.getString();//文件里面的内容
//<span style="white-space: pre;"> </span>System.out.println("str"+str);
//<span style="white-space: pre;"> </span>System.out.println("n1:"+n1);
<span style="white-space: pre;"> </span>String contenttype=it.getContentType();
<span style="white-space: pre;"> </span>Long size=it.getSize();
<span style="white-space: pre;"> </span>//防止文件为空
<span style="white-space: pre;"> </span>if(size==0){
<span style="white-space: pre;"> </span>continue;//文件为空,直接返回;
<span style="white-space: pre;"> </span>}
<span style="white-space: pre;"> </span>//用户名。必须要填写
<span style="white-space: pre;"> </span>if(name==null||name.trim()==""){
<span style="white-space: pre;"> </span>continue;
<span style="white-space: pre;"> </span>}
<span style="white-space: pre;"> </span>//<span style="white-space: pre;"> </span>System.out.println(name+","+contenttype+","+size);
<span style="white-space: pre;"> </span>//在服务器端的资源文件名不能用中文,浏览器会自动编码-------必须要把用户上传的文件名转成没有中文的名字存储,
<span style="white-space: pre;"> </span>//为了让用户在下载时能还原出原来的名字,就要把原文件名和映射名的对应关系存储起来,在用户下载时再转换回来
<span style="white-space: pre;"> </span>//映射名
<span style="white-space: pre;"> </span>String id=UUID.randomUUID().toString().replace("-", "");
<span style="white-space: pre;"> </span>//文件名
<span style="white-space: pre;"> </span>String lastname=name.substring(name.lastIndexOf("."));
<span style="white-space: pre;"> </span>//名字文件格式都找到了---组合
<span style="white-space: pre;"> </span>String filename =id+lastname;
<span style="white-space: pre;"> </span>//拷贝流。让它写到相应位置
<span style="white-space: pre;"> </span>FileUtils.copyInputStreamToFile(it.getInputStream(), new File(path+"/"+filename));}<span style="white-space: pre;"> </span>}} catch (FileUploadException e) {
<span style="white-space: pre;"> </span>throw new RuntimeException("文件上传解析错误。"+e);
<span style="white-space: pre;"> </span>}finally{
<span style="white-space: pre;"> </span>if(it0==null){
<span style="white-space: pre;"> </span>it0.delete();//删除临时文件
<span style="white-space: pre;"> </span>}}out.close();}}</span><span style="font-size: 18px;">
</span>
文件下载源代码:
[html] view plaincopyprint?
<span style="font-size:14px;">package cn.hncu.downImg;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownImgDemo 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 {
//设置相应头
response.setContentType("application/force-download");
//给前台传用户名
/*传固定的用户名
String aa="1.jpg";//若是中文,需要编码
aa=URLEncoder.encode(aa, "UTF-8");
response.setHeader("Content-Disposition", "attachment;filename='"+aa+"'");////必须要加“attachment;”,否则会变成浏览
*/
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);}}}</span><span style="font-size: 18px;">
</span>
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有