标题:java上传本地图片到工程目录
只看楼主
雨打233芭蕉
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2019-4-24
结帖率:0
已结贴  问题点数:10 回复次数:5 
java上传本地图片到工程目录
java编程,编写一个前端页面,设置一个功能:选择一张本地图片或者视频,然后上传到项目工程创建的一个目录下。但是每次我在前端选了文件,点击上传,到了后端那里,就只剩下一个文件名称了。这个该怎么实现,请教各位大佬指点一二。
搜索更多相关主题的帖子: java 上传 图片 工程 目录 
2019-04-24 23:06
会龙庄
Rank: 1
等 级:新手上路
帖 子:11
专家分:5
注 册:2019-4-25
得分:5 
文件上传现在有很多插件可以实现。前段时间刚做了一个文件上传,采用的是JSP+Servlet完成上传,用的fileupload插件。我这个同时将文件信息存到了数据库,存数据库的就就注册信息一致。附上源码,希望能够帮助到你。
public class addNewBookServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    // 上传文件存储目录
    private static final String UPLOAD_DIRECTORY = "upload";
    // 上传配置
    private static final int MEMORY_THRESHOLD   = 1024 * 1024 * 3;  // 3MB
    private static final int MAX_FILE_SIZE      = 1024 * 1024 * 40; // 40MB
    private static final int MAX_REQUEST_SIZE   = 1024 * 1024 * 50; // 50MB
      
    /**
     * @see HttpServlet#HttpServlet()
     */
    public addNewBookServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        if (!ServletFileUpload.isMultipartContent(request)) {
            // 如果不是则停止
            PrintWriter writer = response.getWriter();
            writer.println("Error: 表单必须包含 enctype=multipart/form-data");
            writer.flush();
            return;
        }
        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer=response.getWriter();
        StringBuffer fileStr=new StringBuffer();  //上传的文件名,最后输出用
        // 配置上传参数
        DiskFileItemFactory factory = new DiskFileItemFactory();
        // 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中
        factory.setSizeThreshold(MEMORY_THRESHOLD);
        // 设置临时存储目录
        factory.setRepository(new File(System.getProperty(")));
        ServletFileUpload upload = new ServletFileUpload(factory);         
        // 设置最大文件上传值
        upload.setFileSizeMax(MAX_FILE_SIZE);         
        // 设置最大请求值 (包含文件和表单数据)
        upload.setSizeMax(MAX_REQUEST_SIZE);
        // 中文处理
        upload.setHeaderEncoding("UTF-8");
        
        // 构造临时路径来存储上传的文件
        // 这个路径相对当前应用的目录
        String uploadPath = LM.toChinese(request.getServletContext().getRealPath("") + LM.toChinese(File.separator + UPLOAD_DIRECTORY));
        // 如果目录不存在则创建
        File uploadDir = new File(uploadPath);
        if (!uploadDir.exists()) {
            uploadDir.mkdir();
        }
        try {
            // 解析请求的内容提取文件数据
            List<FileItem> formItems = upload.parseRequest(new ServletRequestContext(request));
            if (formItems != null && formItems.size() > 0) {
                // 迭代表单数据
                for (FileItem item : formItems) {
                    // 处理不在表单中的字段
                    if (!item.isFormField()) {
                        String fileName = new File(item.getName()).getName();
                        String filePath = uploadPath + File.separator + fileName;
                        String bookname="";
                        String bookwriter="";
                        String bookprice="";
                        Book_message book=new Book_message();
                        BookImple bookim=new BookImple();
                        NowTime time=new NowTime();
                        String ts=time.getDate();
                        File storeFile = new File(filePath);
                        HttpSession session=request.getSession();
                        //String fieldName=item.getFieldName();
                        Iterator<FileItem> iterator=formItems.iterator();
                        while(iterator.hasNext()){
                            FileItem FileItem=iterator.next();
                            if(FileItem.getFieldName().equals("bookname")){
                                bookname=LM.toChinese(FileItem.getString());
                                session.setAttribute("bookname", bookname);
                                System.out.println("添加书籍名称为:"+bookname);
                            }else if(FileItem.getFieldName().equals("bookwriter")){
                                bookwriter=LM.toChinese(FileItem.getString());
                                System.out.println("添加数据作者为:"+bookwriter);
                                session.setAttribute("bookwriter", bookwriter);
                            }else if(FileItem.getFieldName().equals("bookprice")){
                                bookprice=FileItem.getString();
                            }
                        }
                        
                        book=bookim.addNewBook(bookname, bookwriter, bookprice,filePath,ts);
                            // 在控制台输出文件的上传路径
                        System.out.println(filePath);
                        System.out.println("文件上传成功");
                            // 保存文件到硬盘
                        item.write(storeFile);
                        request.setAttribute("message","文件上传成功!");
                    }
                }
            }
        } catch (Exception ex) {
            request.setAttribute("message","错误信息: " + ex.getMessage());
        }
        
     // 跳转到 message.jsp
        request.getServletContext().getRequestDispatcher("/showaddbookmessage").forward(request, response);
    }
}
2019-04-25 15:09
雨打233芭蕉
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2019-4-24
得分:0 
回复 2楼 会龙庄
这个前端代码是怎么样的呀?有什么特别注意的地方的嘛?
您的这些:ServletFileUpload,LM,都是引用插件的类的嘛??
2019-04-25 21:58
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:39
帖 子:423
专家分:1871
注 册:2018-2-6
得分:5 
为何要上传工程目录,实际情况,应该没有这种操作吧

假如人生没有梦想,和咸鱼有什么区别!
2019-04-27 09:31
会龙庄
Rank: 1
等 级:新手上路
帖 子:11
专家分:5
注 册:2019-4-25
得分:0 
回复 3楼 雨打233芭蕉
是的,用了fileupload这个上传插件,ServletFileUpload是插件带的。LM是处理中文乱码的。前端表单没有特殊的地方,表单需要加入enctype="multipart/form-data"这个属性,必须加。<form a enctype="multipart/form-data">额外说明一下这个属性和textarea有冲突。上传<input type="file">
2019-04-29 16:17
雨打233芭蕉
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2019-4-24
得分:0 
回复 4楼 疯狂的小a
那一般情况下是怎么个存储法的呢?直接存到数据库??
2019-05-04 11:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-494402-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.469598 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved