0

アプリケーションにAJAXファイルアップロード機能をコーディングしました。私のラップトップから実行すると完璧に動作します。同じアプリを使用してまったく同じファイルを試したが、jBossサーバーにデプロイすると、次の例外が発生します。

2013-02-18 11:30:02,796 ERROR [STDERR] java.io.FileNotFoundException: C:\Users\MyUser\Desktop\TestFile.pdf (The system cannot find the file specified).

getFileDataメソッド:

private byte[] getFileData(File file) {

    FileInputStream fileInputStream = null;
    byte[] bytFileData = null;

    try {
        fileInputStream = new FileInputStream(file);
    } catch (FileNotFoundException e1) {
        e1.printStackTrace();
    }

    if (fileInputStream != null) {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] bytBuffer = new byte[1024];

        try {
            for (int readNum; (readNum = fileInputStream.read(bytBuffer)) != -1;) {
                byteArrayOutputStream.write(bytBuffer, 0, readNum);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        bytFileData = byteArrayOutputStream.toByteArray();
    }

    return bytFileData;
}

(上記の方法から)変数のファイルコンテンツを取得する:

byte[] bytFileData = this.getFileData(file);

ファイルの作成:

private boolean makeFile(File folderToMake, File fileToMake, byte[] bytFileData) {

    Boolean booSuccess = false;
    FileOutputStream fileOutputStream = null;

    try {

        if (!folderToMake.exists()) {
            folderToMake.mkdirs();
        }

        if (!fileToMake.exists()) {

            if (fileToMake.createNewFile() == true) {

                booSuccess = true;

                fileOutputStream = new FileOutputStream(fileToMake);

                fileOutputStream.write(bytFileData);
                fileOutputStream.flush();
                fileOutputStream.close();
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
        booSuccess = false;
    }

    return booSuccess;
}

何か案が?

ありがとうございました

チャールズ

4

1 に答える 1

2

リクエストの一部としてファイルパスをサーバーに渡しただけで、実際にファイルをアップロードしてから、そのファイルパスを使用してファイルにアクセスしようとしているようです。

コードがローカルで実行されている場合、ファイルシステムにアクセスでき、ファイルを見つけることができるため、これはラップトップで機能します。完全に独立したマシンであるため、サーバーにデプロイしても機能せず、その結果、ファイルシステムにアクセスできなくなります。

実際にファイルをアップロードするには、クライアント側(AJAX)コードを変更してから、アップロードされたファイルを使用するようにサーバー側コードを変更する必要があります。AJAXファイルのアップロードは一般的に不可能であることに注意してください-回避策を使用してこの機能を提供するjQueryなどのフレームワーク用のプラグインがあります。

私は100%ではありませんが、HTML5機能を使用して適切なAJAXファイルのアップロードが可能であると思いますが、そのためのブラウザーのサポートは今のところかなり貧弱になるでしょう。

于 2013-02-18T16:50:34.557 に答える