激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - javaWEB實(shí)現(xiàn)相冊管理的簡單功能

javaWEB實(shí)現(xiàn)相冊管理的簡單功能

2020-03-01 11:24YX_blog JAVA教程

這篇文章主要介紹了javaWEB實(shí)現(xiàn)相冊管理的簡單功能,包括圖片的上傳、統(tǒng)一瀏覽、單個(gè)下載、單個(gè)刪除,還有一個(gè)功能只能刪除自己上傳的文件,感興趣的小伙伴們可以參考一下

這僅僅只是一個(gè)小小的相冊管理,主要實(shí)現(xiàn)的功能:能夠?qū)崿F(xiàn)對圖片的上傳,統(tǒng)一瀏覽,單個(gè)下載,單個(gè)刪除,只能刪除自己上傳的文件。
現(xiàn)在對每個(gè)功能進(jìn)行單個(gè)的解釋:
圖片的上傳 
圖片的上傳在之前的文章中寫的很清楚了,點(diǎn)擊打開鏈接:《JavaEE實(shí)現(xiàn)前后臺(tái)交互的文件上傳與下載》 。
在這個(gè)相冊管理中,就不是單一的文件傳了,還需要涉及到很多參數(shù)供其他功能模塊的使用

?
1
2
3
4
5
6
7
8
9
10
11
<span style="font-size:24px;">//上傳文件一般采用外面的 apache的上傳工具包
 /*
 * 我們需要將上傳的文件放到指定的文件夾下
 * 要獲得文件的信息 文件名 要存儲(chǔ)的文件夾(打散) uuid--dir
 * 解決中文問題存儲(chǔ)的文件名 uuid.jpg
 * 每個(gè)人都有自己的權(quán)限 ip
 * 上傳的時(shí)間  dt
 * 文件原先的真是名字 relName
 * 相片的說明 desc
 * 文件的擴(kuò)展名 ext
 *上面上傳一個(gè)圖片需要這么多的信息,,所以 采用 值對象《VO》封裝采用打亂文件夾存儲(chǔ),讓性能更優(yōu)。</span>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<span style="font-size:24px;"> */
 request.setCharacterEncoding("utf-8");
 response.setContentType("text/html;charset=utf-8");
 PrintWriter out=response.getWriter();
 
 //讀文件用到apache的兩個(gè)包
 //臨時(shí)存儲(chǔ)目錄
 File f =new File("f:/ex/temp");//存放臨時(shí)文件的目錄
 DiskFileItemFactory dff=new DiskFileItemFactory(1024*1024*20, f);//允許臨時(shí)存儲(chǔ)文件大小為20M
 
 //解析的文件的工具
 ServletFileUpload sf =new ServletFileUpload(dff);
 sf.setSizeMax(1024*1024*50);//允許存儲(chǔ)容量為50M
 sf.setFileSizeMax(1024*1024*20);//單個(gè)文件最大容量為 20M
 
 String path=getServletContext().getRealPath("/upFile");//獲得文件的所在磁盤的路徑--》存儲(chǔ)位置
 Photo p =new Photo();
 InputStream in=null;//拷貝流需要
 boolean boo=false;
 FileItem f0=null;//用來刪除臨時(shí)文件
 try {
 List<FileItem> list=sf.parseRequest(request);
 for(FileItem ff:list){</span>
?
1
<span style="font-size:24px;">//前面的都是和之前的那個(gè)說的差不多,具體的統(tǒng)計(jì)參數(shù)就是從這里開始。</span>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<span style="font-size:24px;"> f0=ff;
 if(ff.isFormField()){//這個(gè)為描述的內(nèi)容
  String name=ff.getString("utf-8");//采用utf-8的編碼方式去讀
  p.setDesc(name);//1 文件的描述
 }else{
  String name=ff.getName();//獲得文件本框里面的內(nèi)容--->整個(gè)圖片的目錄
  //System.out.println("name:"+name);
  String id=UtilsFactory.getUUid();
  p.setId(id);//6
  String dirs=UtilsFactory.getDir(id);//獲得文件夾目錄----使用uuid一一打散了的
  p.setDir(dirs);//2 打亂之后的目錄
  p.setDt(UtilsFactory.getDate());//3 時(shí)間
  String relname=name.substring(name.lastIndexOf("/")+1);
  p.setRelName(relname);//4 文件的真實(shí)名字
  String ext=name.substring(name.lastIndexOf("."));
  p.setExt(ext);//5 文件擴(kuò)展名
  p.setIp(request.getRemoteAddr());//7 IP
  boo =MyDao.Add(p);//保存到xml文件中
  if(boo){//保存成功
  path=path+"/"+p.getDir();
  File f1 =new File(path);//判斷文件的存儲(chǔ)路徑是否存在,不存在就創(chuàng)建
  if(!f1.exists()){
  f1.mkdirs();
  }
  in=ff.getInputStream();
  FileUtils.copyInputStreamToFile(in,new File(path+"/"+p.getId()+p.getExt()) );
  }
 }
 }
 } catch (FileUploadException e) {
 boo=false;
 }finally{
 if(f0!=null){
 f0.delete();//刪除臨時(shí)文件
 }
 }</span>

上傳除了統(tǒng)計(jì)參數(shù),我們需要將數(shù)據(jù)存儲(chǔ)的xml文件中,還需要將圖片存儲(chǔ)起來。等瀏覽的時(shí)候統(tǒng)一查看。
效果圖:

javaWEB實(shí)現(xiàn)相冊管理的簡單功能

統(tǒng)一瀏覽
瀏覽基本就是全部將xml文件里面的數(shù)據(jù),讀出來,然后統(tǒng)一讀出來顯示。封裝在一個(gè)list中,將所有的photo數(shù)據(jù)封裝在list集合中

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//查詢所有的對象然后封裝成一個(gè)list對象返回給前端
 public static List<Photo> getAll(){
 
 List<Photo> list=new ArrayList<Photo>();
 Document dom =DocumentFactory.getDocument();
 Element root=dom.getRootElement();
 Iterator it=root.elementIterator();//這是根節(jié)點(diǎn)遍歷器
 while(it.hasNext()){
 Element e=(Element) it.next();//找到節(jié)點(diǎn)
 Photo p =new Photo();//每一的photo地址不一樣,所以必須每次新開空間
 p.setDesc(e.attributeValue("desc"));//文件描述符
 p.setDir(e.attributeValue("dir"));//文件目錄
 p.setDt(e.attributeValue("dt"));//時(shí)間
 p.setExt(e.attributeValue("ext"));//文件擴(kuò)展名
 p.setId(e.attributeValue("id"));//uuid生成的id
 p.setIp(e.attributeValue("ip"));
 p.setRelName(e.attributeValue("relname"));
 list.add(p);
 }
 return list;
 }

具體代碼:

  1. //瀏覽相冊需要把所有的文件讀出來。需要一一去讀,所以需要去讀所有的xml文件 
  2.  response.setContentType("text/html;charset=utf-8"); 
  3.  request.setCharacterEncoding("utf-8"); 
  4.  PrintWriter out = response.getWriter(); 
  5.  out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">"); 
  6.  out.println("<HTML>"); 
  7.  out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); 
  8.  out.println(" <BODY>"); 
  9.  List<Photo> list=MyDao.getAll();//獲得所有xml文件里面的內(nèi)容,數(shù)據(jù)全部封裝到list中 
  10.  String path=getServletContext().getContextPath();//進(jìn)入web之后要采用相對路徑才能訪問的到 
  11.  String ss=null
  12.  String imgs=null
  13.  String dt=null
  14.  String relName; 
  15.  String tt=null
  16.  String str = "<table border=1px width='80%'><tr><th>相冊名</th><th>時(shí)間</th><th>圖片顯示</th><th>操作</th>"
  17.  out.write(str); 
  18.  for(Photo p:list){ 
  19.  relName=p.getRelName(); 
  20.  dt=p.getDt(); 
  21.  imgs=path+"/upFile/"+p.getDir()+"/"+p.getId()+p.getExt();//完成的文件路徑加文件名 
  22.   
  23.  ss="<tr><td>"+relName+"</td><td>"+dt+"</td><td>"+"<a href='"+imgs+"'><img style='border:0px' width='100' height='100' src='"+imgs+"' alt='圖片'/></a></td>"
  24.  tt="<td><a href='DownFile?id="+p.getId()+"'>下載</a> <a href='MyDelelte?id="+p.getId()+"'>刪除圖片</a>"+"</td></tr>";//通過id來區(qū)分他們直接的區(qū)別 可以進(jìn)行刪除和下載 
  25.  out.write(ss); 
  26.  out.write(tt); 
  27.  } 

效果:

javaWEB實(shí)現(xiàn)相冊管理的簡單功能

單個(gè)下載
下載在之前的上傳和下載中都說的很清楚了,點(diǎn)擊打開鏈接: 《JavaEE實(shí)現(xiàn)前后臺(tái)交互的文件上傳與下載》。

下載的代碼中需要注意:需要設(shè)置相應(yīng)頭和文件名的傳輸


  1. 對于下載文件需要主要 首先需要讓瀏覽器知道 設(shè)置頭 
  2. * response.setContentType("application/force-download");//設(shè)置相應(yīng)頭,告訴瀏覽器這是下載文件 
  3. * 第二就是設(shè)置文件名了 
  4. * response.setHeader("Content-Disposition","attachment;filename='"+relName+"'");//下載是那邊顯示的是原來文件名 

下面是具體的代碼:

  1. response.setContentType("application/force-download");//設(shè)置相應(yīng)頭,告訴瀏覽器這是下載文件 
  2.  request.setCharacterEncoding("utf-8"); 
  3.   
  4.  String id=request.getParameter("id"); 
  5.  Photo p=MyDao.getSingalByid(id);//通過id獲得要下載的對象 
  6.  //寫入真實(shí)名字 
  7.  if(p!=null){ 
  8.  String relName1=p.getRelName(); 
  9.  String relName=URLEncoder.encode(relName1, "utf-8"); 
  10.  response.setHeader("Content-Disposition","attachment;filename='"+relName+"'");//下載是那邊顯示的是原來文件名  
  11.  OutputStream out =response.getOutputStream();//寫文件時(shí)候需要 
  12.  //路徑 
  13.  String path="/upFile/"+p.getDir()+"/"+p.getId()+p.getExt(); 
  14.  String path1 =getServletContext().getRealPath(path); 
  15.   
  16.  System.out.println(path1);//檢測 
  17.   
  18.  InputStream in=new FileInputStream(path1); 
  19.   
  20.  byte[] b=new byte[1024]; 
  21.  int len =0; 
  22.  while((len=in.read(b))!=-1){ 
  23.  out.write(b, 0, len); 
  24.  } 
  25.   
  26.  }else
  27.  response.setContentType("utf-8"); 
  28.  PrintWriter pw =response.getWriter(); 
  29.  pw.write("文件不存在無法下載"); 
  30.  } 
  31.  } 

效果圖:

javaWEB實(shí)現(xiàn)相冊管理的簡單功能

刪除文件
刪除文件需要用到的技術(shù)相對其他功能
要匹配IP,ID這樣才能讓刪除的時(shí)候用權(quán)限

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//刪除照片
public static Map<String , Object> deleteByid(String ip,String id) {
 Map<String, Object> map =new HashMap<String, Object>();
 Document dom =DocumentFactory.getDocument();
 Element ele=(Element) dom.selectSingleNode("//photo[@id='"+id.trim()+"']");//xpath的使用
 if(ele==null){
 map.put("success", false);
 map.put("msg", "已經(jīng)刪除");
 return map;
 }else{
 String tempip=ele.attributeValue("ip");
 if(!tempip.equals(ip)){
 map.put("success", false);
 map.put("msg", "你不能刪除別人的照片");
 return map;
 }else{
 map.put("success", true);
 //訪問成功后,把數(shù)據(jù)分裝成一個(gè)值對象,返回給邏輯層 我們這樣直接刪除,只是xml文件里面的節(jié)點(diǎn)刪除,但是已經(jīng)存儲(chǔ)的文件是沒有刪除的
 Photo p =new Photo();
 p.setId(id);
 p.setExt(ele.attributeValue("ext"));
 p.setDir(ele.attributeValue("dir"));
 map.put("photo", p);
 
 //真正的數(shù)據(jù)刪除
 ele.getParent().remove(ele);
 DocumentFactory.Save();
 return map;
 }
 }
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
request.setCharacterEncoding("utf-8");
 response.setContentType("text/html;charset=utf-8");
 PrintWriter out=response.getWriter();
 String id =request.getParameter("id");//從客戶端傳過來的消息
 String ip =request.getRemoteAddr();
 Map<String, Object> map =MyDao.deleteByid(ip,id);
 if(map.get("success").equals(false)){//這都是刪除不成功的
 out.print("消息為:"+map.get("success"));
 }else{
 Photo p =(Photo) map.get("photo");//根據(jù)photo里面的文件名和路徑刪除文件
 String path=getServletContext().getRealPath("upFile");
 String filename=path+"/"+p.getDir()+"/"+p.getId()+p.getExt();//文件的路徑包括文件名
 System.out.println(filename);
 File f=new File(filename);
 if(f.exists()){
 System.out.println(f.getName());
 f.delete();//刪除文件
 }
 }
 response.sendRedirect("LookPhoto");//重定向到顯示頁面
}

整個(gè)項(xiàng)目的下載鏈接: 《javaWEB實(shí)現(xiàn)相冊管理的簡單功能》

正在處于學(xué)習(xí)中,剛學(xué)到這個(gè)知識(shí)點(diǎn),技術(shù)可能很落后了,但也愿意分享給大家,大家共同進(jìn)步。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 片在线观看 | 免费看国产 | 男女亲热网站 | 91aa.app| 久久久一区二区三区视频 | 久草在线最新 | 九九热免费在线观看 | 日韩视频一区二区三区四区 | 亚洲一级片在线观看 | 国产亚洲福利 | 久久久久国产一区二区三区不卡 | 久久久久久久久久性 | 国产一级爱c视频 | 亚洲va久久久噜噜噜久久男同 | 最污网站| 国产成人精品一区在线播放 | 国产亚洲精品成人 | 91九色精品国产 | 国产精品视频海角社区88 | 92看片淫黄大片一级 | 成人免费淫片 | 99视频网址 | 日本在线不卡免费 | 久草成人在线观看 | 高清做爰免费无遮网站挡 | 亚洲一区在线观看视频 | 成人h精品动漫一区二区三区 | 狠狠色噜噜狠狠狠米奇9999 | 久草中文网 | 91亚洲免费视频 | 国产99久久久久久免费看农村 | 国产精品美女一区二区 | 久久免费视频在线 | 久久不雅视频 | 国产精品久久久久久久久久电影 | fc2成人免费人成在线观看播放 | 国产乱淫av片免费 | 羞羞的动漫在线观看 | 久久久久久久一区 | 人禽l交免费视频观看 视频 | 日本高清视频网站www |