如何使用jsf在http服务器中保存文件?

时间:2011-03-11 13:51:43

标签: java tomcat

String urlPath = "http://hostname:portno/filepath.pdf";
            url = new URL(urlPath);
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            conn.setUseCaches(false);
            conn.setRequestProperty("Content-Type", "application/octet-stream");
            OutputStream outStream = conn.getOutputStream();
            out = new BufferedOutputStream(outStream);
            if (byteContent != null && byteContent.length > 0) {
                out.write(byteContent);
                byteLength = byteContent.length;
            }

此代码不会给出任何异常,但不会在我的tomcat位置创建文件

2 个答案:

答案 0 :(得分:0)

这不是将文件写入tomcat的方法。您正在发出HTTP请求,将字节发送到服务器。

您应该创建一个FileOutputStream(..)并在那里写入字节。这是因为您的代码在Tomcat中运行。

如果您的代码是单独的应用程序,则需要创建一个可以处理传入请求并保存文件的servlet。没有直接的方法可以简单地将文件推送到服务器(并且更好 - 否则每个人都会上传文件)

答案 1 :(得分:0)

apache commons-fileupload

  FileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    List<FileItem> items = upload.parseRequest(request);
    Iterator<FileItem> iterator = items.iterator();
    while(iterator.hasNext()) {
        FileItem item = iterator.next();
        if(!item.isFormField()) {
            File uploadedFile = new File("fullPathToFile");
            System.out.println(uploadedFile.getAbsolutePath());
            item.write(uploadedFile);                                        
        }
    }