0

` JSF 2.0 と Servlet 3.0 を使用して、HTTP サーバーにファイルをアップロードするための Java コードを作成しています。ファイルをローカル システムにアップロードしようとすると正常に動作しますが、http_path 変数で HTTP サーバーの URL ディレクトリを指定すると、「java.io.IOException: ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません」というエラーが表示されます。

  • また、Web ブラウザーを使用して HTTP の場所にアクセスしている間も問題はなく、http_path (Bean.java で使用) で指定された HTTP パスを指定すると、Java コードを介してファイルを正常にダウンロードできました。
  • デバッグ中に file.createNewFile() 行で失敗しますが、http_path 変数でローカル ディレクトリを指定しても問題はありません。

    http_path 変数で指定された HTTP URL パスが正しいかどうか、または重要なコードが欠落しているかどうかを教えてください。

私のBeanファイル:

@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 は 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) at java.io.File.createNewFile(File) で正しくありません.java:883) で com.example.Bean.submit(Bean.java:59) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で

4

0 に答える 0