0

`我正在编写一个 java 代码来使用 JSF 2.0 和 Servlet 3.0 在 HTTP 服务器中上传文件。当我尝试将文件上传到本地系统时,它工作正常,但是如果我在 http_path 变量中指定 HTTP 服务器 url 目录,它会给出“java.io.IOException:文件名、目录名或卷标语法不正确”错误。

  • 使用 Web 浏览器访问 HTTP 位置时也没有问题,如果我给出 http_path 中给出的 HTTP 路径(在 Bean.java 中使用),我可以通过 java 代码成功下载文件
  • 调试时它在 file.createNewFile() 行失败,但如果我在 http_path 变量中指定本地目录,它不会出现任何问题;

    有人可以让我知道 http_path 变量中给出的 HTTP url 路径是否正确,还是我错过了任何重要的代码?

我的豆文件:

@ManagedBean
@RequestScoped
public class Bean {
        private UploadedFile uploadedFile;
        public String submit() throws IOException {
        String fileName = FilenameUtils.getName(uploadedFile.getName());
        System.out.println("Uploaded File name is " + fileName);

        byte[] bytes = uploadedFile.getBytes();
        String http_path = "http://`172.21.11.108`/myhttp/";
        URLConnection http = new URL(http_path).openConnection();
        http.connect();
        System.out.println("permisssion" + http.getPermission());
        System.out.println("Url is " + http.getURL());
        System.out.println("String" + http.getConnectTimeout());
        FileOutputStream fop = null;
        System.out.println("File name " + http_path + fileName);
        File file = new File(http_path+fileName);
        System.out.println("File path" + file.getPath());

        if (!file.exists()) {
            file.createNewFile();
            System.out.println("entered file created");
        }
    fop = new FileOutputStream(file);
        System.out.println("File name " + http_path + fileName);
        fop.write(bytes);
        fop.flush();
        fop.close();
                              return "success";

    }

Glassfish 日志中的错误:

INFO: 文件名是 servlet_code_upload.txt INFO: 文件 contentTypeis text/plain INFO: permisssion(java.net.SocketPermission 172.21.11.108:80 connect,resolve) INFO: Url is http:// 172.21.11.108/myhttp/ INFO: String0 INFO: 文件名 http: // 172.21.11.108/myhttp/servlet_code_upload.txt 信息:文件路径http:`172.21.11.108`\myhttp\servlet_code_upload.txt 警告:

{bean.submit}:java.io.IOException:文件名、目录名或卷标语法不正确 javax.faces.FacesException:

{bean.submit}:java.io.IOException:文件名、目录名或卷标语法不正确

com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118) 在 javax.faces.component.UICommand.broadcast(UICommand.java:315) 在 javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java: 794) ... 36 更多原因:java.io.IOException: 文件名、目录名或卷标语法在 java.io.WinNTFileSystem.createFileExclusively(Native Method) 在 java.io.File.createNewFile(File .java:883) 在 com.example.Bean.submit(Bean.java:59) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

4

0 回答 0