私は、アクションクラスに当たるまでファイルをメモリに保持し、ファイルをディスクに書き込まないようにする必要があります。ディスク上に数秒間存在していても、ファイルがアップロードされているサーバー上で悪用される恐れがあります。私は、Struts2フレームワークがファイルを一時的にディスクに格納するという1つの解決策にしかセットアップされていないと感じています。これは正しい仮定ですか、何かが本当にシンプルでないのですか?私は考えることができるStruts 2ファイルアップロードを使用して一時ファイルを作成することはできますか?
答えて
私はこの問題を解消できるので、アップロードされたファイルを一時的にディスクに保存しないという要件をどのように達成したかを共有したいと考えました。
まず、アップロードするファイルの合理的な最大サイズに同意し、一度に1つのファイルのみをアップロードできるようにしました。この合意が成立しないことにより、私の解決策はうまくいかないでしょう。
私が使用したストラットのプラグイン機能があります。私はJarkartaMultiPartRequestクラスに基づいて独自のMutiPartRequestプラグインとクラスを作成しました。ファイルシステムへのすべての書き込みをコメントアウトしました。最大ファイルサイズを10MBに設定します。パーサーのsizeThresholdを10MBより少し大きく設定します。 sizeThresholdをmaxSizeより大きく設定すると、アップロードされたファイルのバイト配列全体を保持する1つのアイテムがメモリ内に作成されました。私はhttp要求で私のメモリバイト配列を保持するカスタム属性を作成したので、アクションクラスでアクセスすることができました。私はバイト配列を得るために見つけることができる他の方法はありませんでした。
私がやらなければならなかったいくつかのクリーンアップ項目がありましたが、全体的にアプローチはうまくいくように見えました。
一つの方法は、(/tmp
のサブディレクトリとして)ファイルシステム上のディレクトリにstruts.multipart.saveDir
を設定し、そのディレクトリには、メモリ・バックアップストレージとしてマウントされていることであろう。そうすれば、ディスク上に何も存在しないことが保証されます。
しかし、ファイルシステムがメモリでバックアップされていても、その一部はいくつかの低水準OSメカニズム(ページングなど)によってディスクに書き込まれる可能性があります。しかし、これはメモリバックアップされたファイルシステムだけでなく、メモリに格納されているものにも当てはまります。この記憶域を絶対にメモリに残して、ページを作成しない場合は、もう少し創造的にし、ファイルシステムによってバックアップされたメモリが常に「常駐」であることを確認する必要があります。
- 1. Laravelファイルアップロードで一時ファイル付きのフォルダが作成される
- 2. エンティティフレームワークのコードファーストテクニックを使用してSQL Server 2016で一時テーブルを作成することはできますか?
- 3. Struts 2はOSGiバンドルとして利用できますか?
- 4. 複数のファイルStruts 2の単一ファイルタグを使用してアップロード
- 5. struts 2.xを使用してdocファイルをダウンロードするには
- 6. Spring/Struts/SeamなしでSocialauthを使用することはできますか?
- 7. C++、Gnuplot:RAMに一時ファイルを作成し、Gnuplotで使用する
- 8. Javascriptを使用してファイルを作成することができます
- 9. REST Plugin(Struts 2)を使用しているときにredirectActionを作成するには
- 10. WPFを使用してモバイルアプリケーションを作成することはできますか?
- 11. Javaを使用してDLLを作成することはできますか?
- 12. Springを使用してコンソールアプリケーションを作成することはできますか?
- 13. SNMPを使用してネットワークトポロジダイアグラムを作成することはできますか?
- 14. rubyを使用してデスクトップアプリケーションを作成することはできますか?
- 15. 一時ファイルを作成し、FTP(Java webapp)を使用してアップロードします。
- 16. os.stat()を使用するとファイルの作成時刻が一致しません
- 17. Struts 2のファイルアップロードはSpringブートでは機能しません
- 18. Cでスレッドを使用して一時ファイルを作成する方法#
- 19. SELECT INTOを使用しているときに一時表に索引を作成できますか?
- 20. jblas mmulを一時ファイルなしで使用できますか?
- 21. Axis 2 wsdl2javaを使用して、HTTPSを使用するクライアントサイドコードを生成することはできますか?
- 22. Spring-WSを使用してWSDLファイルからWSクライアントを作成することはできますか?
- 23. Railsは一時ファイルを生成することはできません
- 24. File.Createを使用してExcelファイルを作成できますか?
- 25. strutsで<html:htmlを使用することは何ですか?
- 26. JavaScript/AJAXを使用してクライアント側でファイルを作成することはできますか?
- 27. AzureクラウドホスティングでSQL Server Management Studioを使用して.bakファイルを作成することはできますか?
- 28. ファイルアップロードを使用してプロフィール写真を作成する
- 29. struts 2でのファイルアップロードの問題
- 30. 一時ファイルを生成することは許可されていますか?
ディスクに保存しないという要件を満たす非常に創造的な方法です。問題は、ファイルのように見え、ファイルのようにアクセスできる場合には、これは成功しません。 –