問題タブ [apache-commons-fileupload]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Apache FileUpload API で閉じられた InputStream
これは非常に具体的な質問です。FileUpload API について十分な知識を持っている人がここにいることを願っています。
この API を使用したことがある場合は、ファイルの最大サイズを超えると、FileSizeLimitExceededException がスローされるため、次の項目を読み取ることができず、hasNext()
メソッドをもう一度呼び出して次の項目に反復することを試みることを知っておく必要があります。入力ストリームが閉じられ、再度読み取ろうとすると、IOException がスローされます。
次のパラメータを読み取ることができないため、このシナリオは非常に悪いです。次のフォームを想定します。
現在、ファイルは最大サイズを超えています。結果:
「param1」が読み込まれます。
「myFile」は FileSizeLimitExceededException を生成します。
「param2」は読み込まれません。
次の項目 (この場合は「param2」) を読みたいので、API の一部を書き直そうとしていますが、うまくいきませんでした。
誰も同じ問題を抱えていますか?どのように修正しましたか?
ありがとう。
編集:まあ、BalusC によって提案されたソリューションを実装しました。将来のために:
FileUpload ラッパー
FileUpload ラッパーの使用法
このラッパーに他に何か必要があると思われる場合は、それを言ってください。理想はAPI自体を変更して修正することであるため、私はそれを実際の解決策として受け入れません。
java - DiskFileItem を使用しているときに非決定的なファイル削除エラーが発生するのはなぜですか?
私のアップロード サーブレットは、置き換えようとしているファイル (コードの終わり近く) を (一見) ランダムに削除できなかったという例外をスローし続けます。ストリームを使用しておらず、ブラウザでファイルが開かれていないため、何が原因かわかりません。誰がこれを引き起こしているのか知っていますか? コードは私には正しいように見えるので、私はこれについて完全に無知です。DiskFileItem を使用したのはこれが初めてなので、そこで処理するニュアンスがあるかどうかはわかりません。
うまくいくこともあれば、うまくいかないこともあることを覚えておいてください。私はそれで迷っています。
問題領域:
私のシステムアウトは、ファイルと宛先の両方が存在すると常に言います。アップロードで既存のファイルを上書きしようとしています。
完全なコード: (& pastebin )
編集:追加するには、getHome()と「ホーム」は実際にはコードにはありません。これは、ホームパスを保護するためだけです
servlets - ファイルサイズの取得 - Apache Commons ファイルのアップロード
サーブレットと JSP を使用して Web アプリケーションを構築しています。Apache Commons ライブラリを使用してファイル アップロード機能を構築しました。ユーザーが巨大なファイルをアップロードするのを制限したいので、制限を 20 MB に設定しました。
Fileitem.getSize()
サイズを決定するためにファイル全体を読み取っていると思われる方法を使用してサイズを取得しています。ユーザーがサイズが数 GB のファイルをアップロードしようとすると、アプリケーション サーバーに多くのオーバーヘッドが追加されませんか? ファイルサイズを取得するためのより良い代替手段はありますか?
jsf - JSFにApacheCommonsFileUploadを使用してファイルをアップロードさせる方法
PrimefacesまたはTomahawkを使用してファイルのアップロードを行う方法を知っていますが、Apache Commons FileUploadを使用してファイルのアップロードを行おうとしていますが、これまでのところ、少し障害があります。フォームを使用していても、フォームmultipart/form-data
を送信すると、コンテンツタイプはになりapplication/x-www-form-urlencoded
ます。これが私のコードです
これが私のViewBean
したがって、上記のコンテンツタイプを印刷しようとすると、が表示されましたapplication/x-www-form-urlencoded
。に置くajax="false"
とp:commandButton
、submit()
メソッドは呼び出されませんが、取り出すとenctype="multipart/form-data"
(まだ保持しますajax="false"
)、submit()
呼び出されますが、マルチパートではないapplication/x-www-form-urlencoded
ため、apache commons fileuploadはマルチパートではないため、例外をスローします。私がしていることのように思えますが、私はマルチパートの要求を得ることができないようです。助けてください
java - リクエストが終了したときにTomcatがファイルを削除しますか?
私は非常に奇妙な問題に直面しています。(1.2.1) を使用commons-fileupload
して、webapp でファイルのアップロードを処理しています (Tomcat 7.0.23 でホストされ、distributable
フラグが設定されています)。my (no )DiskFileItem
からインスタンスを取得したら、そのメソッドを使用してファイルを保存します (ストリームでファイルをディスクに書き込む必要がある場合に使用するように構成されたディレクトリと同じディレクトリに)。問題は、この新しいファイル (私が明示的に作成して名前を付けたもの) が、リクエストの処理が終了した後に削除されることです。ご想像のとおり、ファイルに再度アクセスする必要がある場合、これは問題になります。DiskFileItemFactory
FileCleaningTracker
write
DiskFileItemFactory
関連する可能性があると思われるちょっとした情報:
- 問題のディレクトリは、サーブレット コンテキストのデフォルトの一時ディレクトリではなく、Tomcat ディレクトリの下にもありません。
- 別のコード パスで、そのファイルを (別の要求ではなく) すぐにコピーしますが、そのコピーは削除されません。
- リクエストが完了する前に
chmod a-w
ファイルを削除しても、リクエストが完了すると削除されます。
助けてくれてありがとう。
java - ApacheCommonsアップロードでアップロードサイズを設定する方法
こんにちは、ファイルのアップロードにApacheCommonsUploadを使用しています
しかし、これでは最大20MBしかアップロードできません。このコードでアップロードされたファイルのサイズを設定するにはどうすればよいですか。
java - commons-fileupload と Liferay の問題
ファイルのアップロードを受け入れるように Liferay Web Form ポートレットをカスタマイズしようとしていますが、送信する電子メールにファイルを添付することを除いて、ほとんどすべてが機能しています。
フォームからフィールドを取得する:
そして、メールの作成と送信:
ファイルのアップロードを処理してメッセージにファイルを添付しようとすると、次のコンソール エラーが表示されます。
DiskFileItemFactory
正しく構成されていますか? 私は何が間違っているのでしょうか?
ありがとう。
java - Apache FileUpload Streaming API ですべてを読み取る前に、ファイル アップロードのサイズを決定する
Apache FileUpload ライブラリを使用するには 2 つの方法があります。
ファイルアップロード
http://commons.apache.org/fileupload/using.html
およびストリーミング FileUpload API
http://commons.apache.org/fileupload/streaming.html
ストリーミング API には、ストリームを処理する前に fileSize をチェックする方法がないように見えることを除いて、どちらもうまく機能します。
これは、ストリーミング API が基本的にファイル サイズを認識していないためですか、それともマルチパート アップロード サイズを取得するためにいくつかのヘッダーまたは何かを手動で読み取る必要があるためですか?
java - Springでの非同期ファイルのアップロード
これが私がしていることです。マルチパートファイルをAjax経由でSpringWebアプリにアップロードしたい。サーバーはPOSTリクエストを受信すると、データベースにチケット番号を作成します。次に、実際のファイルのアップロードを処理するスレッドを開始します。次に、サーバーはチケット番号を返します。
CommonsMultipartResolverを使用してリクエストを処理し、resolveLazilyフラグをtrueに設定して、Multipartがすぐに解決されないようにしました。
だからここに私が持っているものの線に沿った何かがあります
したがって、ここでのポイントは、チケット番号を使用して進捗状況の更新を取得できることです。大きなファイルがアップロードされているとしましょう。ファイルのアップロードをPOSTにしたクライアント(この場合はAjaxリクエストなど)は、非同期でそれを実行し、チケット番号を取得できます。クライアントはそのチケット番号を使用して、ファイルのアップロードの段階を決定し、別のページに情報を表示できます。
もう1つの用途は、すべてのチケット番号をサーバーに要求し、サーバーで行われているすべてのファイルアップロードの「ライブ」ビューを表示するHTMLページを作成できることです。
コントローラが戻るとすぐに、SpringがCommonsMultipartResolverでcleanupMultipart()を呼び出すため、これを機能させることができませんでした。resolveLazilyフラグがfalseに設定されているため、cleanupMultipart()が呼び出されると、マルチパートファイルの解決と初期化が開始されます。これにより、「request.getFile( "theFile");」の呼び出し間の競合状態が発生します。runnableおよびcleanupMultipart()呼び出しで、最終的に例外が発生します。
誰かアイデアはありますか?バックエンドの非同期ファイル処理を実行したいので、ここである種のHTTPコントラクトを破っていますか?