1

これは非常に基本的なものですが、4時間耳をかきむしりました。今はあきらめています。可能な限り多くの情報を提供するために、777に設定されたbasedirへの許可を持つubuntu 11.04の下で、zk 5.0.8をfrontend + spring + hibernate + mavenとして使用するJava webappプロジェクトであると言えます。

ファイルのアップロードを試してみましたが、すべて問題ないようで、コードが正しいと確信している場合は、機能していません。

ここにコードがあります

private boolean saveUploadledFile(Media uploadedMedia, String basedir) {

    String code = codeGenerator.generateContentCode(15);
    String FINAL_DIR_PATH = basedir + "/"+"Racing" + "/" + code;
    String FINAL_FILE_PATH = FINAL_DIR_PATH + "/" + uploadedMedia.getName();
    alert(FINAL_DIR_PATH);
    try {
        File finaldir = new File(FINAL_DIR_PATH);
        //apache commons
        FileUtils.forceMkdir(finaldir);
        alert("Size equals" + uploadedMedia.getByteData().length);
        fout = new FileOutputStream(new File(FINAL_DIR_PATH+"/"+addContentWindow1$txtName.getText()+".jar"));
          //apache commons
          IOUtils.copy(uploadedMedia.getStreamData(), fout);

    } catch (IOException e) {
        throw new RuntimeException(e);
    } catch (Exception e) {
        throw new RuntimeException(e);
    } finally {
        try {
            IOUtils.closeQuietly(in);
            IOUtils.closeQuietly(fout);

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    return false;
}

new FileOutputStream は常に例外をスローします。そのため、保存する場所を指定できない場合は、ファイルを保存する方法を教えてください。何か案は?ファイルがあることを確認するために、意図的にファイルのサイズを出力します。誰でも光を当てることができますか?これを読んでくれてありがとう

実際の例外は

原因: java.io.FileNotFoundException: /joseph/mbcs/Games/Racing/20314/somthing.jar (ディレクトリです)

4

2 に答える 2

1

除外:

if(finalfile.canWrite()) {

ファイルを作成して書き込んでいるとき。OutputStreamコンストラクターの書き込みに失敗すると、誤った名前のFileNotFoundException(Java 7で名前が変更されたと思います)が発生します。

もう1つのヒント、コピーなどの一般的な作業は、apache-commons(IOUtils、FileUtils)を使用して実行できます。

import org.apache.commons.fileupload.util.Streams;
Streams.copy(in, out, false);
于 2011-10-28T08:39:10.693 に答える
1

私は間違っているかもしれませんが、あなたのコードのこの部分は間違っていませんか?

     if (!finaldir.exists()) {
        if (!finaldir.canWrite())
            finaldir.mkdirs(); // this creates no directory no error
         else
             alert("Cannot write to the directory" );
     }

ディレクトリが存在しない場合は、そこに書き込めないかどうかを確認してから作成し、そうでない場合はエラーを出力します。!間違いがあると思います。

あなたの問題の理由かもしれませんが、そうではないかもしれません.

于 2011-10-28T07:43:07.807 に答える