2016-05-03 32 views
-1

ウェブページからデータベースにファイルアップロードを実装したいと考えています。私は、ファイルをWebページからデータベースに転送するために使用されるいくつかのtempolaryファイルを作成する必要があります。私はこのJavaの例を見つけました。アップロード後にファイルを削除する

public void copyFileLocation() throws IOException { 

     File temp = File.createTempFile("temp-file-name", ".tmp"); 

    } 

正常にコピーした後でファイルを自動的に削除する方法はありますか?また、このコードプラットフォームは独立していますか?私はtmpフォルダ内の異なるプラットフォーム上にtanpolaryファイルを作成する必要があります。

+1

原則として(一時的な)ファイルにアップロードする必要はありません。すぐにアップロードをデータベースに書き込むことができます。 –

+0

"成功したコピーの後に?"何コピー? 'File#renameTo'の使用を検討しましたか? –

+0

コピーを取得したら、 'File#delete()'を使います。 – Sanjeev

答えて

0

SQL型BLOBの列を想定して、アップロードしたデータをデータベースにすぐに格納します。

try (PreparedStatement stmt = connection.prepareStatement(
     "INSERT INTO files(blob) VALUES(?)"); 

    // Either: 
    InputStream in = ... uploaded file 
    // or: 
    byte[] data = ... uploaded file contents 
    ByteArrayInputStream in = new ByteArrayInputStream(data); 

    stmt.setBinaryStream(1, in); 
    stmt.executeUpdate(); 
} 

(いくつかのアップロードのソリューションがあります。)

利点はあまり行わシャベルです。

+0

まあ、私はそのような解決策を考えていましたが、私がファイルシステムと中間メモリバッファ上のファイルを使ってステップをスキップするかどうか分かりません。データの一時的保存に使用することができます。そして、1GBのRAMを持つVPSに2GBのファイルがある場合、結果はあまり良くありません。あなたの事例を拡張できますか?私がInputStreamまたはbyte []を使うべきかどうかはあまり明確ではありません。 –

+0

'byte []'確かにメモリが空いています。一般的には、InputStreamが可能でなければなりません。 JDBC_reads_streams_は大きなメモリ消費はありません。そして、同じ方法でJDBC以外でファイルを保存する方法は他にどれでしょうか。 **パーマネントファイルへのパスの保存**が別の解決策になります。バックアップを簡単にします。名前としてUUIDを使用できました。 –

+0

情報ありがとうございます。 –

関連する問題