Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Servlet3.0ファイルアップロード時、送信したデータを保存前に加工することは可能ですか?

お邪魔します。
Servlet3.0のファイルアップロード機能を使って、CSVファイルをアップロードしサーバー側に保存させることができました。
ですが、アップロードされたデータをファイルに保存する前に、内容を一部加工することは可能なのでしょうか?

https://megascus.github.io/servlet-spec/docs/apidocs/javax/servlet/http/Part.html#getInputStream--
などの資料によれば、アップロードされたファイルをgetInputStreamを使って「中身を取得」したりすることは可能なようですが、「中身を書き換える」方法は無さそうに見えます。

もちろん、アップロード完了後、保存されたファイルを開いて中身を加工、他のファイルとして保存してやればよいことは分かっていますが、途中でフィルタリングできるのなら二度手間にならずに済むのでは…と思ったのです。
唯一思いついたのは、getInputStreamで取得した内容を自前でファイルに書き込み、part.writeを使わないという方法ですが、これしか無いのでしょうか?

ちなみに今回やりたい事は、アップロードするCSVファイルに含まれることがある「機種依存文字」を、自動的に無難な文字に置き換えるというものです。
テキストファイルをアップロードし、含まれている「A」の文字を「a」に置き換えるようなものでしょうか。
このファイルアップロード機能では実現できないのであれば、他の方法があれば教えてください。

1

回答

469

閲覧

1件の回答

評価

0

Partはあくまで「アップロード内容の一時保持」なんだから、書き換える手段は用意していない。
Partを使う前提なら

>getInputStreamで取得した内容を自前でファイルに書き込み、part.writeを使わない

こうなるわけだが、Part自体使わず自前でmultipartをパースすればいかようにもできる。
というか昔はそうやってた(ありもののライブラリを使うか、自前でパースを書くかはともかく)。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。