精华内容
下载资源
问答
  • 2.在自己的空间中创建多个相册,并上传多照片进行在线查看管理。 3.相册共享权限可设好友、所有人、指定人,并可指定共享类别、查看密码。 4.强大的相册及照片搜索功能,可按各种属性进行复合查找。 5.照片打印、设...
  • 相册管理系统

    千次阅读 2016-07-25 02:05:53
    功能文件的上传,下载管理 技术:1.用xml当做数据库存储信息(dom4j,xpath) 2.Java表单的文件上传和下载 3.文件目录的打散 ( Hash目录是一种优化文件存储性能的方法) 需要的jar包: commons-fileupload...

    功能文件的上传,下载和管理
    技术:1.用xml当做数据库存储信息(dom4j,xpath)
    2.Java表单的文件上传和下载
    3.文件目录的打散 ( Hash目录是一种优化文件存储性能的方法)
    这里写图片描述

    需要的jar包:
    commons-fileupload-1.2.2.jar、commons-io-2.1.jar、dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar


    先写index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
    
        <title>相册管理系统</title>
      </head>
    
      <body>
            <h1>我的小相册</h1>
            <a href="jsps/upload.jsp">上传相册</a>
            <a href="servlets/ShowServlet">浏览相册</a>
      </body>
    </html>
    

    upload.jsp是下载页面放在jsps目录下

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head>
    
      <body>
        <h1>相处上传</h1>
        <form action="<%=request.getContextPath()%>/servlets/UploadServlet"
              method="post" enctype="multipart/form-data">
                   文件:<input type="file" name="file1"/><br/>
                   说明:<input type="text" name="desc" /><br/>
           <input type="submit" value="上传" />
        </form>
      </body>
    
    </html>
    

    photos.xml放在src目录下

    <?xml version="1.0" encoding="UTF-8"?>
    <photos>
    </photos>
    

    在写值对象PhotoModel

    package cn.hncu.demain;
    
    public class PhotoModel {
        private String id;
        private String realName;
        private String ext;
        private String dir;
        private String dateTime;
        private String ip;
        private String desc;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getRealName() {
            return realName;
        }
        public void setRealName(String realName) {
            this.realName = realName;
        }
        public String getExt() {
            return ext;
        }
        public void setExt(String ext) {
            this.ext = ext;
        }
        public String getDir() {
            return dir;
        }
        public void setDir(String dir) {
            this.dir = dir;
        }
        public String getDateTime() {
            return dateTime;
        }
        public void setDateTime(String dateTime) {
            this.dateTime = dateTime;
        }
        public String getIp() {
            return ip;
        }
        public void setIp(String ip) {
            this.ip = ip;
        }
        public String getDesc() {
            return desc;
        }
        public void setDesc(String desc) {
            this.desc = desc;
        }
        @Override
        public String toString() {
            return "PhotoModel [id=" + id + ", realName=" + realName + ", ext="
                    + ext + ", dir=" + dir + ", dateTime=" + dateTime + ", ip="
                    + ip + ", desc=" + desc + "]";
        }
    
    }
    

    写工具类两个:
    MyUtil(日期格式化,目录打散代码,随机id代码)

    package cn.hncu.utils;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.UUID;
    
    public class MyUtils {
        private  MyUtils() {
        }
        private static SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
        public static String getCurrentDateTime(){
            return format.format(new Date());
        }
        public static String getUUid(){
            UUID uuid=UUID.randomUUID();
            String id=uuid.toString().replaceAll("-", "");
            return id;
        }
        public static String getDir(String uuid){
            String dir1=Integer.toHexString(uuid.hashCode() & 0xf);
            String dir2=Integer.toHexString((uuid.hashCode() & 0xf0)>>4);
            return dir1+"/"+dir2;
        }
    }
    

    Dom4jFactory(dom4j的相关操作,获取document对象,保存操作)

    package cn.hncu.utils;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.UnsupportedEncodingException;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    public class Dom4jFactory {
        private static Document dom = null;
        private static String path;
        static {
            try {
                SAXReader sax = new SAXReader();
                // 学习一下服务器下的资源路径加载方式(因为我们的资源已经从MyEclipse中发布到Tomcat服务器中了,所以跟原来纯Java项目不一样了)
                // 利用当前类找到它的类加载器,然后通过该类加载器再去获得资源路径
                path = Dom4jFactory.class.getClassLoader().getResource("photos.xml")
                        .getPath();
                dom = sax.read(new FileInputStream(path));
            } catch (Exception e) {
                throw new RuntimeException(e.getMessage(), e);
            }
        }
        public static Document getDom(){
            return dom;
        }
        public static boolean save(){
            try {
                OutputFormat format=new OutputFormat();
                format.setEncoding("utf-8");
                XMLWriter w = new XMLWriter( new FileOutputStream(new File(path)),format);
                w.write(dom);
                w.close();
                return true;
            } catch (Exception e) {
                return false;
            }
        }
    }
    

    从底层写PhotoDao

    package cn.hncu.dao;
    
    
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    
    import cn.hncu.demain.PhotoModel;
    import cn.hncu.utils.Dom4jFactory;
    
    
    public class PhotoDao {
        //添加
        public boolean add(PhotoModel photo){
            Document dom=Dom4jFactory.getDom();
            Element root=dom.getRootElement();
            Element ePhoto=root.addElement("photo");
            ePhoto.addAttribute("id", photo.getId());
            ePhoto.addAttribute("realName", photo.getRealName());
            ePhoto.addAttribute("dir", photo.getDir());
            ePhoto.addAttribute("ip", photo.getIp());
            ePhoto.addAttribute("dateTime", photo.getDateTime());
            ePhoto.addAttribute("ext", photo.getExt());
            ePhoto.addElement("desc").setText(photo.getDesc());
    
            boolean boo=Dom4jFactory.save();
            return boo;
        }
    
        //浏览
        public List<PhotoModel>  getAll(){
            Document dom=Dom4jFactory.getDom();
            List<PhotoModel> list=new ArrayList<PhotoModel>();
            Element root=dom.getRootElement();
            Iterator<Element> it=root.elementIterator();
            while(it.hasNext()){
                PhotoModel photo=new PhotoModel();
                Element e=it.next();
                photo.setId(e.attributeValue("id"));
                photo.setDateTime(e.attributeValue("dateTime"));
                photo.setDir(e.attributeValue("dir"));
                photo.setExt(e.attributeValue("ext"));
                photo.setIp(e.attributeValue("ip"));
                photo.setRealName(e.attributeValue("realName"));
                photo.setDesc(e.elementText("desc"));
                list.add(photo);
            }
            return list;
        }
    
        public PhotoModel getSingleById(String id) {
            Document dom=Dom4jFactory.getDom();
            List<PhotoModel> list=getAll();
            for(PhotoModel photo:list){
                if(photo.getId().equals(id)){
                    return photo;
                }
            }
            return null;
        }
        public boolean del(String id) {
            Document dom=Dom4jFactory.getDom();
            Element e=(Element) dom.selectSingleNode("//photo[@id='"+id.trim()+"']");
            return e.getParent().remove(e);
    
        }
    }
    

    最后写四个servlet
    UploadServlet 上传Servlet代码

    package cn.hncu.servlets;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.util.List;
    
    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;
    
    import cn.hncu.dao.PhotoDao;
    import cn.hncu.demain.PhotoModel;
    import cn.hncu.utils.MyUtils;
    
    public class UploadServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
            out.println("<HTML>");
            out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
            out.println("  <BODY>");
    
            out.println("不支持get方式上传!");
    
            out.println("  </BODY>");
            out.println("</HTML>");
            out.flush();
            out.close();
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setContentType("text/html;charset=utf-8");
    
            PrintWriter out = response.getWriter();
    
            String path=request.getServletContext().getRealPath("/photos");
            DiskFileItemFactory factory=new DiskFileItemFactory();
            factory.setRepository(new File("g:/a"));
            ServletFileUpload upload = new ServletFileUpload(factory);
            upload.setSizeMax(1024*1024*10);//最大10M
            upload.setHeaderEncoding("utf-8");//用于设置文件名的编码,相当于:request.setCharacterEncoding("utf-8");
    
             FileItem fi=null;
             try {
                List<FileItem> list=upload.parseRequest(request);
                PhotoModel photo = new PhotoModel();//数据封装---需要7个属性
                boolean boo=false;
                InputStream in = null;
    
                for(FileItem fi2:list){
                    fi=fi2;
                    if(fi.isFormField()){
                        String desc=fi.getString("utf-8");
                        photo.setDesc(desc);//desc
                    }else{
                        in=fi.getInputStream();
                        String realName=fi.getName();
                        if(realName==null || realName.trim().equals("")){
                            out.print("没有选择文件!");
                            return;
                        }
                        if(realName.indexOf("\\")!=-1){
                            realName=realName.substring(realName.lastIndexOf("\\")+1);
                        }
                        photo.setRealName(realName);//真实文件名
                        String ext=realName.substring(realName.lastIndexOf("."));
                        photo.setExt(ext);//3
                        photo.setDateTime(MyUtils.getCurrentDateTime());//4
                        photo.setId(MyUtils.getUUid());//5
                        photo.setDir(MyUtils.getDir(photo.getId()));//6
                        photo.setIp(request.getRemoteAddr());//7
    
                    }
                }
    
                //把相片信息存储到数据库
                PhotoDao dao=new PhotoDao();
                boo=dao.add(photo);
                //如果上面的相片信息保存成功,那么才开始接收图片文件,把它保存到服务器硬盘
                if(boo){
                    System.out.println(dao);
                    path=path+"/"+photo.getDir();
                    File dir=new File(path);
                    if(!dir.exists()){
                        dir.mkdirs();
                    }
                    String fileName=path+"/"+photo.getId()+photo.getExt();
                    FileUtils.copyInputStreamToFile(in, new File(fileName));
                    String strPath = request.getContextPath()+"/servlets/ShowServlet";
                    out.print("上传成功!<a href='"+strPath+"'>浏览相册</a>");
                }else{
                    out.print("上传失败!");
                }
             } catch (FileUploadException e) {
                throw new RuntimeException("上传失败!", e);
            }finally{
                if(fi!=null){
                    fi.delete();
                }
            }
            out.flush();
            out.close();
        }
    
    }
    

    ShowServlet 浏览相册的Servlet端

    package cn.hncu.servlets;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.hncu.dao.PhotoDao;
    import cn.hncu.demain.PhotoModel;
    
    public class ShowServlet extends HttpServlet {
    
         IOException if an error occurred
    
        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("text/html;charset=utf-8");
            request.setCharacterEncoding("utf-8");
            PrintWriter out = response.getWriter();
            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
            out.println("<HTML>");
            out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
            out.println("  <BODY>");
    
            String table="<table border='1' width='100%'>"+
                        "<tr><th>文件名</th><th>上传ip</th><th>上传时间</th><th>图片</th><th>说明</th><th>操作</th></tr>"
                        ;
            out.print(table);
            PhotoDao dao=new PhotoDao();
            List<PhotoModel> list=dao.getAll();
            for(PhotoModel p:list){
                out.print("<tr>");
                out.println("<td>"+p.getRealName()+"</td>");
                out.println("<td>"+p.getIp()+"</td>");
                out.println("<td>"+p.getDateTime()+"</td>");
                //输出图片
                String path=request.getContextPath()+"/photos/"+p.getDir()+"/"+p.getId()+p.getExt();
                out.println("<td><a href='"+path+"'><img src='"+path+"' width='200' height='200'></img></a></td>");
                String op="<a href='"+request.getContextPath()+"/servlets/DelServlet?id="+p.getId()+"'>删除</a>&nbsp;";
                out.println("<td>"+p.getDesc()+"</td>");
                op+="<a href='"+request.getContextPath()+"/servlets/DownServlet?id="+p.getId()+"'>下载</a>";
                out.println("<td>"+op+"</td>");
                out.print("</tr>");
            }
    
            out.println("</table>");
            out.println("  </BODY>");
            out.println("</HTML>");
            out.flush();
            out.close();
        }
    
    }
    

    DownServlet 下载的服务器代码

    package cn.hncu.servlets;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    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;
    
    import cn.hncu.dao.PhotoDao;
    import cn.hncu.demain.PhotoModel;
    
    public class DownServlet 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 id=request.getParameter("id");
            response.setContentType("application/force-download");
            PhotoModel p=new PhotoDao().getSingleById(id);
            if(p!=null){
    
                String realName=p.getRealName();
                realName=new String(realName.getBytes("iso8859-1"),"utf-8");
                response.setHeader("content-Disposition", "attachment;filename=\""+realName+"\"");
                String relpath=getServletContext().getRealPath("/photos/"+p.getDir()+"/"+p.getId()+p.getExt());
                InputStream in=new FileInputStream(relpath);
                OutputStream out=response.getOutputStream();
                System.out.println(relpath);
                byte buf[]=new byte[1024];
                int len=0;
                while ((len=in.read(buf))!=-1){
                    out.write(buf,0,len);
                }
                out.close();
            }else{
                response.setContentType("text/html;charset=utf-8");
                response.getWriter().println("该文件已经被删除!");
            }
        }
    
    }
    

    Delservlet 删除操作的服务器

    package cn.hncu.servlets;
    
    import java.io.File;
    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;
    
    import cn.hncu.dao.PhotoDao;
    import cn.hncu.demain.PhotoModel;
    
    public class DelServlet 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 {
    
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out=response.getWriter();
            String id=request.getParameter("id");
            PhotoModel p=new PhotoDao().getSingleById(id);
            if(p!=null){
                if(!p.getIp().equals(request.getRemoteAddr())){
                    out.println("你无权进行删除!");
                    return;
                }
                //※※※※以下部分课后补敲的!!!!
                //1删除数据库中的信息
                PhotoDao dao=new PhotoDao();
                boolean boo=dao.del(id);
                //2把服务器硬盘中的文件删除
                if(boo){
                String fileName="photos/"+p.getDir()+"/"+p.getId()+p.getExt();
                    String pathFileName = getServletContext().getRealPath(fileName);
                    File f=new File(pathFileName);
                    if(f.exists()){
                        f.delete();
                    }
                    String strPath = request.getContextPath()+"/servlets/ShowServlet";
                    out.println("相片删除成功!<a href='"+strPath+"'>浏览相册</a>");
                }else{
                    out.println("相片删除失败!");
                }
            }else{
                response.setContentType("text/html;charset=utf-8");
                response.getWriter().println("该文件不存在!");
            }
        }
    }
    
    展开全文
  • 一个基于cakephp的相册管理系统,在网上找到的,和大家分享下载地址:http://download.csdn.net/source/600124更多下载:http://download.csdn.net/ylcz
     一个基于cakephp的相册管理系统,在网上找到的,和大家分享

    下载地址:http://download.csdn.net/source/600124
    更多下载:http://download.csdn.net/ylcz
    展开全文
  • 桃源相册管理系统是一款以.net和access进行开发的相册管理软件。主要功能:1.多用户注册各自使用,互不干予。2.在自己的空间中创建多个相册,并上传多照片进行在线查看管理。3.相册共享权限可设好友、所有人、指定人...
  • 图片相册管理网页模板 架设好web服务器 下载后可以直接打开浏览 供你学习参考使用 进入安装向导: http://localhost/相册地址/setup/default.aspx 安装后请确认/setup/文件夹删除
  • index.jsp: My JSP 'index.jsp' starting page ... 小相册 上传照片 浏览相册 cn.hncu.dao:---这里直接写实现类了,最好是接口+实现类+工厂 PhotoDAO package cn.hncu.dao; import java.util.


    index.jsp:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP 'index.jsp' starting page</title>
      </head>
      
      <body>
        <h1>小相册</h1>
        
        <a href="jsps/upload.jsp">上传照片</a>	<br>
        
        <a href="ShowServlet">浏览相册</a>	<br>
        
      </body>
    </html>
    
    cn.hncu.dao:---这里直接写实现类了,最好是接口+实现类+工厂

    PhotoDAO

    package cn.hncu.dao;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    
    import cn.hncu.domain.Photo;
    import cn.hncu.utils.Dom4jFactory;
    
    public class PhotoDAO {
    
    	public boolean save(Photo photo) {
    		Document dom=Dom4jFactory.getDocument();
    		Element root=dom.getRootElement();
    		//给root(photos>添加一个子元素
    		//值对象-id,realName,dt,ext,ip,dir,desc
    		Element ePhoto = root.addElement("photo");
    		ePhoto.addAttribute("id", photo.getId());
    		ePhoto.addAttribute("realName", photo.getRealName());
    		ePhoto.addAttribute("dt", photo.getDt());
    		ePhoto.addAttribute("ext", photo.getExt());
    		ePhoto.addAttribute("ip", photo.getIp());
    		ePhoto.addAttribute("dir", photo.getDir());
    		
    		ePhoto.addElement("desc").setText(photo.getDesc());
    		
    		//持久化
    		try {
    			Dom4jFactory.save();
    		} catch (Exception e) {
    			return false;
    		}
    		
    		return true;
    	}
    
    	public List<Photo> getAll() {
    		List<Photo> resList=new ArrayList<Photo>();
    		Document dom=Dom4jFactory.getDocument();
    		Element root=dom.getRootElement();
    		Iterator<Element> it = root.elementIterator("photo");
    		while(it.hasNext()){
    			Element ePhoto=it.next();
    			Photo photo=new Photo();
    			//值对象-id,realName,dt,ext,ip,dir,desc
    			photo.setId(ePhoto.attributeValue("id"));
    			photo.setRealName(ePhoto.attributeValue("realName"));
    			photo.setDt(ePhoto.attributeValue("dt"));
    			photo.setExt(ePhoto.attributeValue("ext"));
    			photo.setIp(ePhoto.attributeValue("ip"));
    			photo.setDir(ePhoto.attributeValue("dir"));
    			photo.setDesc(ePhoto.elementText("desc"));
    			
    			resList.add(photo);
    		}
    		
    		return resList;
    	}
    
    	public Photo getSingleById(String id) {
    		List<Photo> list=getAll();
    		for(Photo photo:list){
    			if(photo.getId().equals(id)){
    				return photo;
    			}
    		}
    		return null;
    	}
    
    	public boolean del(String id) {
    		Document dom=Dom4jFactory.getDocument();
    		String xpath="//photo[@id='"+id.trim()+"']";
    		Element ePhtot = (Element) dom.selectSingleNode(xpath);
    		boolean boo = ePhtot.getParent().remove(ePhtot);
    		try {
    			Dom4jFactory.save();
    		} catch (Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    		return boo;
    	}
    	
    }
    
    cn.hncu.domain

    Photo

    package cn.hncu.domain;
    
    public class Photo {
    	//id,realName,dt,ext,ip,dir,desc
    	private String id;		//Uuid
    	private String realName;//文件的真实名
    	private String dt;		//上传相片的日期时间
    	private String ext;		//文件的扩展名
    	private String ip;		//上传文件的用户的ip地址
    	private String dir;		//文件存放目录--打散的
    	private String desc;	//相片文字说明
    	public String getId() {
    		return id;
    	}
    	public void setId(String id) {
    		this.id = id;
    	}
    	public String getRealName() {
    		return realName;
    	}
    	public void setRealName(String realName) {
    		this.realName = realName;
    	}
    	public String getDt() {
    		return dt;
    	}
    	public void setDt(String dt) {
    		this.dt = dt;
    	}
    	public String getExt() {
    		return ext;
    	}
    	public void setExt(String ext) {
    		this.ext = ext;
    	}
    	public String getIp() {
    		return ip;
    	}
    	public void setIp(String ip) {
    		this.ip = ip;
    	}
    	public String getDir() {
    		return dir;
    	}
    	public void setDir(String dir) {
    		this.dir = dir;
    	}
    	public String getDesc() {
    		return desc;
    	}
    	public void setDesc(String desc) {
    		this.desc = desc;
    	}
    	@Override
    	public String toString() {
    		return "Photo [id=" + id + ", realName=" + realName + ", dt=" + dt
    				+ ", ext=" + ext + ", ip=" + ip + ", dir=" + dir + ", desc="
    				+ desc + "]";
    	}
    }
    

    photo.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <photos>
    </photos>
    cn.hncu.utils:

    Dom4jFactory

    package cn.hncu.utils;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    public class Dom4jFactory {
    	private static Document dom;
    	private static String path;
    	static{
    		SAXReader sax=new SAXReader();
    		path=Dom4jFactory.class.getClassLoader().getResource("photo.xml").getPath();
    		File file=new File(path);
    		try {
    			dom = sax.read(file);
    		} catch (DocumentException e) {
    			throw new RuntimeException(e.getMessage(), e);
    		}
    	}
    	
    	private Dom4jFactory(){
    	}
    	public static Document getDocument(){
    		return dom;
    	}
    	
    	public static void save(){
    		try {
    			XMLWriter w=new XMLWriter(new FileOutputStream(new File(path)));
    			w.write(dom);
    			w.close();
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    	}
    	
    }
    
    MyUtils

    package cn.hncu.utils;
    
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.UUID;
    
    public class MyUtils {
    	public static String getUuid(){
    		return UUID.randomUUID().toString().replaceAll("-", "");
    	}
    	
    	private static DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    	public static String getCurrentDT(){
    		return df.format(new Date());
    	}
    	
    	public static String  getDir(String uuid){
    		int dir1=uuid.hashCode()&0xf;
    		int dir2=(uuid.hashCode()&0xf0)>>4;
    		return dir1+"\\"+dir2;
    	}
    }
    
    cn.hncu.servlet:

    ShowServlet

    package cn.hncu.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.hncu.dao.PhotoDAO;
    import cn.hncu.domain.Photo;
    
    public class ShowServlet 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("text/html;charset=utf-8");
    		PrintWriter out = response.getWriter();
    		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    		out.println("<HTML>");
    		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    		out.println("  <BODY>");
    		
    		String sTable="<table border='1' width='500px' >"+
    						"<tr><th>文件名</th> <th>上传时间</th> <th>图片</th> <th>文字说明</th> <th>操作</th> </tr>";
    		out.println(sTable);
    		//获取所有相片,每个相片显示成表格的一行
    		PhotoDAO dao=new PhotoDAO();
    		List<Photo> photos = dao.getAll();
    		for(Photo photo:photos){
    			out.println("<tr>");
    			out.println("<td width=100>"+photo.getRealName()+"</td>");	//文件名
    			out.println("<td width=100>"+photo.getDt()+"</td>");		//上传时间
    			//输出图片--request.getContextPath()
    			String path=request.getContextPath()+"/"+"photos/"+photo.getDir()+"/"+photo.getId()+photo.getExt();
    			out.println("<td width=100> <img width=100 src='"+path+"'></img> </td>");
    			
    			out.println("<td width=100>"+photo.getDesc()+"</td>");	//文字说明
    			
    			//操作
    			//通过?id=photo.getId()来传参数
    			String op="<a href='/photoWeb/servlet/DelServlet?id="+photo.getId()+"'>删除</a>   "
    					+"<a href='/photoWeb/servlet/DownServlet?id="+photo.getId()+"'>下载</a>";
    			out.println("<td width=100>"+op+"</td>");
    			
    			
    			out.println("</tr>");
    		}
    		out.println("  </table>");
    		out.println("  </BODY>");
    		out.println("</HTML>");
    		out.flush();
    		out.close();
    	}
    
    }
    
    DelServlet

    package cn.hncu.servlet;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.hncu.dao.PhotoDAO;
    import cn.hncu.domain.Photo;
    
    public class DelServlet 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("text/html;charset=utf-8");
    		PrintWriter out = response.getWriter();
    		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    		out.println("<HTML>");
    		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    		out.println("  <BODY>");
    		
    		String id=request.getParameter("id");
    		String ip=request.getRemoteAddr();
    		PhotoDAO dao=new PhotoDAO();
    		Photo photo=dao.getSingleById(id);
    		if(photo!=null){
    			//1.判断是否有权删除
    			if(!photo.getIp().equals(ip)){
    				out.println("你无权删除别人的图片");
    				return;
    			}else{
    				//2删除数据库中的信息
    				boolean boo = dao.del(id);
    				if(boo){
    					//3.删除服务器磁盘文件
    					String fileName="photos/"+photo.getDir()+"/"+photo.getId()+photo.getExt();
    					String realFileName=getServletContext().getRealPath(fileName);
    					File file=new File(realFileName);
    					if(file.exists()){
    						file.delete();
    						
    					}
    					//request.getContentType():项目根目录
    					String strPath=request.getContextPath()+"/ShowServlet";
    					out.println("相片删除成功! <a href='"+strPath+"'>浏览相册</a>");
    				}else{
    					out.println("相片删除失败");
    				}
    			}
    		}else{
    			out.println("相片已经不存在");
    		}
    		
    		
    		out.println("  </BODY>");
    		out.println("</HTML>");
    		out.flush();
    		out.close();
    	}
    
    }
    
    UploadServlet

    package cn.hncu.servlet;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.util.List;
    
    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;
    
    import cn.hncu.dao.PhotoDAO;
    import cn.hncu.domain.Photo;
    import cn.hncu.utils.MyUtils;
    
    public class UploadServlet extends HttpServlet {
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		response.setContentType("text/html;charset=utf-8");
    		PrintWriter out = response.getWriter();
    		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    		out.println("<HTML>");
    		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    		out.println("  <BODY>");
    		out.println("不支持GET方式");
    		out.println("  </BODY>");
    		out.println("</HTML>");
    		out.flush();
    		out.close();
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		response.setContentType("text/html;charset=utf-8");
    		PrintWriter out = response.getWriter();
    		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    		out.println("<HTML>");
    		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    		out.println("  <BODY>");
    		
    		request.getContentType();
    //		getServletContext().getRealPath(arg0)	获取路径的绝对地址
    		
    //		文件上传核心入口:ServletFileUpload upload=new ServletFileUpload(fileItemFactory);
    		DiskFileItemFactory fileItemFactory=new DiskFileItemFactory();
    		fileItemFactory.setRepository(new File("e://a"));	//临时文件的存放目录
    		
    //		DiskFileItemFactory fileItemFactory2=new DiskFileItemFactory();
    //		ServletFileUpload upload=new ServletFileUpload(fileItemFactory2);
    //		List<FileItem> list = upload.parseRequest(request);
    		
    		ServletFileUpload upload=new ServletFileUpload(fileItemFactory);
    		upload.setSizeMax(1024*1024*10);
    //		request.setCharacterEncoding("utf-8");//设置上传文件的编码
    		upload.setHeaderEncoding("utf-8"); 	//设置文件上传头编码
    		
    		FileItem fi=null;
    		InputStream in=null;
    		try {
    			List<FileItem> list=upload.parseRequest(request);
    			Photo photo=new Photo();		//值对象-id,realName,dt,ext,ip,dir,desc
    			for(FileItem item:list){
    				fi=item;
    				if(item.isFormField()){	//是普通表单组件
    					String desc=item.getString("utf-8");
    					photo.setDesc(desc);	//desc--1
    				}else{	//file表单组件
    					in=fi.getInputStream();
    					String fileName=item.getName();
    					if(fileName==null && fileName.trim().equals("")){
    						out.println("没有选择上传文件");
    						return;
    					}
    					String realName=fileName.substring( fileName.lastIndexOf("\\")+1); //去去掉文件目录的文件名
    					photo.setRealName(realName);//realName--2
    					String ext=realName.substring(realName.lastIndexOf("."));
    					photo.setExt(ext);	//ext--3
    					photo.setDt( MyUtils.getCurrentDT());//uuid--4
    					photo.setIp( request.getRemoteHost() );//ip---5
    					photo.setId(MyUtils.getUuid());
    					photo.setDir(MyUtils.getDir(photo.getId()));
    				}
    			}
    			
    			//调用dao层--保存photo-bean
    			PhotoDAO dao=new PhotoDAO();
    			//只有在文件存储到xml数据库成功后,才把照片存储到服务器中
    			//1.把photo值对象包装的数据存储到数据库
    			boolean boo = dao.save(photo);	
    			if(boo){
    				//获取文件在服务器中的存储目录
    				String path=getServletContext().getRealPath("/photos");
    				path=path+"/"+photo.getDir();
    				File dir=new File(path);
    				if(!dir.exists()){
    					dir.mkdir();
    				}
    				
    				//开始存储
    				String fileName=path+"/"+photo.getId()+photo.getExt();	//存储到服务器磁盘的文件名
    				//拿到FileItem的in流
    //				in = fi.getInputStream();	//只有文件表单组件才有这个in流,所以只能在file表单组件中获取
    				
    				//2.把图片存储到服务器磁盘
    				//使用FileUtil中的工具吧FileItem流的数据拷贝到File中
    				FileUtils.copyInputStreamToFile(in, new File(fileName));	
    				
    				out.println("图片上传成功<a href='"+request.getContextPath()+"'>返回主界面</a>");
    			}else{
    				out.println("图片上传失败");
    			}
    		} catch (FileUploadException e) {
    			e.printStackTrace();
    		} finally{
    			if(fi!=null){
    				fi.delete();	//删除临时文件
    			}
    		}
    		
    		
    		out.println("  </BODY>");
    		out.println("</HTML>");
    		out.flush();
    		out.close();
    	}
    
    }
    
    DownServlet

    package cn.hncu.servlet;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URLEncoder;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.hncu.dao.PhotoDAO;
    import cn.hncu.domain.Photo;
    
    public class DownServlet extends HttpServlet {
    
    	private PhotoDAO dao=new PhotoDAO();
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doPost(request, response);
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		
    		String id=request.getParameter("id");
    		Photo photo=dao.getSingleById(id);
    		//把服务器磁盘中的相片文件读取出来,写到客户端
    		if(photo!=null){
    			String realName=photo.getRealName();
    			
    			realName=URLEncoder.encode(realName,"utf-8");
    			//设置下载的响应头
    			response.setContentType("application/force-download");
    			response.setHeader("content-Disposition", "attachment;filename='\'"+realName+"\'");
    			
    			
    			String fileName="/photos/"+photo.getDir()+"/"+photo.getId()+photo.getExt();//相对路径
    			String pathFileName=getServletContext().getRealPath(fileName);	//真正的带盘符的路径
    			InputStream in=new FileInputStream(pathFileName);
    			OutputStream out=response.getOutputStream();
    			byte bs[]=new byte[512];
    			int len=-1;
    			while((len=in.read(bs))!=-1){
    				out.write(bs, 0, len);
    			}
    			in.close();
    			out.close();
    		}
    	}
    }
    

    展开全文
  • 这仅仅只是一个小小的相册管理,主要实现的功能:能够实现对图片的上传,统一浏览,单个下载,单个删除,只能删除自己上传的文件。现在对每个功能进行单个的解释:图片的上传图片的上传在之前的文章中写的很清楚了,...

    这仅仅只是一个小小的相册管理,主要实现的功能:能够实现对图片的上传,统一浏览,单个下载,单个删除,只能删除自己上传的文件。现在对每个功能进行单个的解释:

    图片的上传

    图片的上传在之前的文章中写的很清楚了,点击打开链接:《JavaEE实现前后台交互的文件上传与下载》 。

    在这个相册管理中,就不是单一的文件传了,还需要涉及到很多参数供其他功能模块的使用

    //上传文件一般采用外面的 apache的上传工具包

    /*

    * 我们需要将上传的文件放到指定的文件夹下

    * 要获得文件的信息 文件名 要存储的文件夹(打散) uuid--dir

    * 解决中文问题存储的文件名 uuid.jpg

    * 每个人都有自己的权限 ip

    * 上传的时间 dt

    * 文件原先的真是名字 relName

    * 相片的说明 desc

    * 文件的扩展名 ext

    *上面上传一个图片需要这么多的信息,,所以 采用 值对象《VO》封装采用打乱文件夹存储,让性能更优。

    */

    request.setCharacterEncoding("utf-8");

    response.setContentType("text/html;charset=utf-8");

    PrintWriter out=response.getWriter();

    //读文件用到apache的两个包

    //临时存储目录

    File f =new File("f:/ex/temp");//存放临时文件的目录

    DiskFileItemFactory dff=new DiskFileItemFactory(1024*1024*20, f);//允许临时存储文件大小为20M

    //解析的文件的工具

    ServletFileUpload sf =new ServletFileUpload(dff);

    sf.setSizeMax(1024*1024*50);//允许存储容量为50M

    sf.setFileSizeMax(1024*1024*20);//单个文件最大容量为 20M

    String path=getServletContext().getRealPath("/upFile");//获得文件的所在磁盘的路径--》存储位置

    Photo p =new Photo();

    InputStream in=null;//拷贝流需要

    boolean boo=false;

    FileItem f0=null;//用来删除临时文件

    try {

    List list=sf.parseRequest(request);

    for(FileItem ff:list){

    //前面的都是和之前的那个说的差不多,具体的统计参数就是从这里开始。

    f0=ff;

    if(ff.isFormField()){//这个为描述的内容

    String name=ff.getString("utf-8");//采用utf-8的编码方式去读

    p.setDesc(name);//1 文件的描述

    }else{

    String name=ff.getName();//获得文件本框里面的内容--->整个图片的目录

    //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 时间

    String relname=name.substring(name.lastIndexOf("/")+1);

    p.setRelName(relname);//4 文件的真实名字

    String ext=name.substring(name.lastIndexOf("."));

    p.setExt(ext);//5 文件扩展名

    p.setIp(request.getRemoteAddr());//7 IP

    boo =MyDao.Add(p);//保存到xml文件中

    if(boo){//保存成功

    path=path+"/"+p.getDir();

    File f1 =new File(path);//判断文件的存储路径是否存在,不存在就创建

    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();//删除临时文件

    }

    }

    上传除了统计参数,我们需要将数据存储的xml文件中,还需要将图片存储起来。等浏览的时候统一查看。

    效果图:

    7d4e81b93298aa181619199a5b5fb888.png

    统一浏览

    浏览基本就是全部将xml文件里面的数据,读出来,然后统一读出来显示。封装在一个list中,将所有的photo数据封装在list集合中

    //查询所有的对象然后封装成一个list对象返回给前端

    public static List getAll(){

    List list=new ArrayList();

    Document dom =DocumentFactory.getDocument();

    Element root=dom.getRootElement();

    Iterator it=root.elementIterator();//这是根节点遍历器

    while(it.hasNext()){

    Element e=(Element) it.next();//找到节点

    Photo p =new Photo();//每一的photo地址不一样,所以必须每次新开空间

    p.setDesc(e.attributeValue("desc"));//文件描述符

    p.setDir(e.attributeValue("dir"));//文件目录

    p.setDt(e.attributeValue("dt"));//时间

    p.setExt(e.attributeValue("ext"));//文件扩展名

    p.setId(e.attributeValue("id"));//uuid生成的id

    p.setIp(e.attributeValue("ip"));

    p.setRelName(e.attributeValue("relname"));

    list.add(p);

    }

    return list;

    }

    具体代码:

    //浏览相册需要把所有的文件读出来。需要一一去读,所以需要去读所有的xml文件

    response.setContentType("text/html;charset=utf-8");

    request.setCharacterEncoding("utf-8");

    PrintWriter out = response.getWriter();

    out.println(""-//W3C//DTD HTML 4.01 Transitional//EN\">");

    out.println("");

    out.println("

    A Servlet");

    out.println("

    ");

    List list=MyDao.getAll();//获得所有xml文件里面的内容,数据全部封装到list中

    String path=getServletContext().getContextPath();//进入web之后要采用相对路径才能访问的到

    String ss=null;

    String imgs=null;

    String dt=null;

    String relName;

    String tt=null;

    String str = "

    相册名时间图片显示操作

    out.write(str);

    for(Photo p:list){

    relName=p.getRelName();

    dt=p.getDt();

    imgs=path+"/upFile/"+p.getDir()+"/"+p.getId()+p.getExt();//完成的文件路径加文件名

    ss="

    "+relName+""+dt+""+"图片";

    tt="

    下载 删除图片"+"";//通过id来区分他们直接的区别 可以进行删除和下载

    out.write(ss);

    out.write(tt);

    }

    效果:

    290d4b17f6a49d7afe0df49e3bb73e3b.png

    单个下载下载在之前的上传和下载中都说的很清楚了,点击打开链接: 《JavaEE实现前后台交互的文件上传与下载》。

    下载的代码中需要注意:需要设置相应头和文件名的传输

    对于下载文件需要主要 首先需要让浏览器知道 设置头

    * response.setContentType("application/force-download");//设置相应头,告诉浏览器这是下载文件

    * 第二就是设置文件名了

    * response.setHeader("Content-Disposition","attachment;filename='"+relName+"'");//下载是那边显示的是原来文件名

    下面是具体的代码:

    response.setContentType("application/force-download");//设置相应头,告诉浏览器这是下载文件

    request.setCharacterEncoding("utf-8");

    String id=request.getParameter("id");

    Photo p=MyDao.getSingalByid(id);//通过id获得要下载的对象

    //写入真实名字

    if(p!=null){

    String relName1=p.getRelName();

    String relName=URLEncoder.encode(relName1, "utf-8");

    response.setHeader("Content-Disposition","attachment;filename='"+relName+"'");//下载是那边显示的是原来文件名

    OutputStream out =response.getOutputStream();//写文件时候需要

    //路径

    String path="/upFile/"+p.getDir()+"/"+p.getId()+p.getExt();

    String path1 =getServletContext().getRealPath(path);

    System.out.println(path1);//检测

    InputStream in=new FileInputStream(path1);

    byte[] b=new byte[1024];

    int len =0;

    while((len=in.read(b))!=-1){

    out.write(b, 0, len);

    }

    }else{

    response.setContentType("utf-8");

    PrintWriter pw =response.getWriter();

    pw.write("文件不存在无法下载");

    }

    }

    效果图:

    bbf415fd5a29b209bab2b728f10c879e.png

    删除文件

    删除文件需要用到的技术相对其他功能

    要匹配IP,ID这样才能让删除的时候用权限

    //删除照片

    public static Map deleteByid(String ip,String id) {

    Map map =new HashMap();

    Document dom =DocumentFactory.getDocument();

    Element ele=(Element) dom.selectSingleNode("//photo[@id='"+id.trim()+"']");//xpath的使用

    if(ele==null){

    map.put("success", false);

    map.put("msg", "已经删除");

    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);

    //访问成功后,把数据分装成一个值对象,返回给逻辑层 我们这样直接删除,只是xml文件里面的节点删除,但是已经存储的文件是没有删除的

    Photo p =new Photo();

    p.setId(id);

    p.setExt(ele.attributeValue("ext"));

    p.setDir(ele.attributeValue("dir"));

    map.put("photo", p);

    //真正的数据删除

    ele.getParent().remove(ele);

    DocumentFactory.Save();

    return map;

    }

    }

    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 map =MyDao.deleteByid(ip,id);

    if(map.get("success").equals(false)){//这都是删除不成功的

    out.print("消息为:"+map.get("success"));

    }else{

    Photo p =(Photo) map.get("photo");//根据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");//重定向到显示页面

    }

    正在处于学习中,刚学到这个知识点,技术可能很落后了,但也愿意分享给大家,大家共同进步。

    展开全文
  • 主要介绍了javaWEB实现相册管理的简单功能,包括图片的上传、统一浏览、单个下载、单个删除,还有一个功能只能删除自己上传的文件,感兴趣的小伙伴们可以参考一下
  • jsp+Mysql相册管理系统

    2013-06-24 19:15:58
    相册管理系统为jsp基础开发详解图书上的一个经典案例,非常适合初学者学习使用,这个系统实现了相册的预览,上传,下载,分类,等功能。与qq相册实现的功能非常相似,是一款不错的学习软件。
  • 【实例简介】该相册管理系统为jsp基础开发详解图书上的一个经典案例,非常适合初学者学习使用,这个系统实现了相册的预览,上传,下载,分类,等功能。与qq相册实现的功能非常相似,是一款不错的学习软件。【实例...
  • jsp相册管理小项目

    千次阅读 2017-07-12 15:10:55
    小项目(相册管理):任何人都可以上传相片,文件名保存在数据库(xml文件)中,用户可以下载,且下载时的文件名与上传时一致即保持不变。图片文件在后台是用UUID打散存放的。用户(以IP识别)只能删除自己上传的照片。 总...
  • 奥维相册管理系统是奥维互动地图浏览器的辅助相册管理软件,是第一款支持奥维互动地图的相册管理系统,支持在奥维地图中显示相片,使用奥维地图,可视化编辑照片的经纬度,有需要的赶快下载吧! 功能介绍 1、支持...
  • 零视界QQ空间相册管家是一款用于QQ空间相片图片批量下载管理软件,留住青春回忆。首发日期:2015.12.25支持一键获取空间相册支持一键获取他人空间相册(无权限)支持图片一键批
  • 相册管理说白了就是文件夹管理,因此要用到命名空间using System.IO; 一、先来做相册管理,添加相册我就不做了,就是添加文件夹,这里主要做一下相册的显示。相册在页面上显示,需要一张图片,可以到网上下载,如: ...
  • 主要为大家详细介绍了相册管理系统的实现步骤,Java表单的文件上传和下载,xml数据库存储信息,感兴趣的小伙伴们可以参考一下
  • PHP编程相册管理系统

    2010-12-17 14:23:26
    源程序下载地址:本帖隐藏的内容meiupic.rar (309.67 KB, 下载次数: 0)12 分钟前 上传下载次数: 0 •全面支持Sqlite和Mysql两种数据库引擎•支持超大图片上传•相册可以设置公开或个人,个人相册登录后才可以看到•...
  • 个人日记相册管理系统(hugexc)是一款用于管理个人日记和相册的个人网站。   程序特点: 1.简单,大方,漂亮 2.全站采用DIV CSS布局 3.日记与相册分析开,可以评论 4.日记可分类别 5.相片可以在不同版块间任意...
  • 让你的很多应用都可以快速的设为私密软件,手机不在自己手上也可以这样设置,对你的相册,通讯录,社交平台进行全面的防护以及守护,快速地抓拍手机的侵入者,对手机进行统一的管理,保障用户的相册安全,欢迎下载PA...
  • Google相簿管理员 利用来: 获取专辑总数 获取所有专辑中的媒体总数 获取媒体项总数 获取未包含在任何相册中的媒体项目(共享媒体项目的某些问题) 使用通过使用“ ”作为请求的范围,无需设置即可获得Oauth JWT。...
  • 个人**记相册管理系统(hugexc)是一款用于管理个人**记和相册的个人网站。 程序特点: 1.简单,大方,漂亮 2.全站采用DIV CSS布局 3.**记与相册分析开,可以评论 4.**记可分类别 5.相片可以在不同版块间任意调整 6.相片...
  • ASP个人相册管理系统

    2008-12-17 12:00:51
    自己做的一个项目,功能很不错哦~带数据库```下载后修改WEB.CONFIG 文件的数据库连接字符.适合独立开发WEB的同学参考哈~
  • 引力相册ios版整理工具让你的手机照片记录有迹可循,这是一款非常智能的手机管理工具,用户可以利用它进行手机相册的二次整理,更多完全自定义的编辑功能帮你完成更多个性化设置,为你的照片赋予专属的情绪,整理...
  • 它可以对您的照片进行分类集中管理,然而并不是普通的管理,而是加密管理,而且每个相册都有自己的密码,如果没有密码则无法进行任何操作,也可以在光盘和U盘里使用,需要的朋友快来下载使用吧。 SoftOrbits Photo ...
  • 使用环境:perl 5.6版本以上, linux/unix或winnt BUG修正 修正重建立时只建立第一个相册的BUG 修正首页对公开相册显示私有...本程序没有限制使用用户的限制,但只有管理员可以添加用户,安装时默认第一个人就是超级管理
  • 一款不错的java web网络相册管理系统

    千次阅读 2015-09-25 09:46:41
    一款不错的java web网络相册管理系统 源代码下载地址:http://www.zuidaima.com/share/1621652530285568.htm
  • 百度相册上传下载工具

    千次阅读 2007-10-06 13:15:00
    你可以在不登录网站的前提下对自己的相册进行管理,无论是上传、下载都比web管理更方便。【新增功能】 1.匿名登录相册,只输入用户名不输入密码登录,就可以查看和下载你的相册。 2.查看和下载其他网友相册,并支持...
  • 简易Android相册管理应用学习教程

    千次阅读 2018-08-05 10:48:48
    LifeCat系列学习项目(Android) ... 这是lifecat项目的Android端手机应用,具有清晰的页面布局与简易的操作,引入了几个开源库,主要参照《第一行代码Android》此书...# Clone下载项目到本地 git clone https://gith...
  • 在主功能界面没有相册相关的可直接查看工具,至少 我在用的时候感觉不方便,而且自带的图片浏览效果不是很令人满意,于是自己整了一个很COOL的一个类似3D效果的相册管理功能。 功能如下: 1.3D立体倒影叠加效果。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 858
精华内容 343
关键字:

下载相册管理