質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

0回答

985閲覧

ajaxからservletにファイルアップロードすると日本語が文字化けする

uer03108

総合スコア194

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

1クリップ

投稿2018/06/12 16:25

ajaxでservletに日本語のファイルをアップロードすると「ファイル名」が文字化けします。

一応、一般的な下記のアップロードサンプルでeclipseのtomcat9上では問題なく動作しておりました。
しかし、warファイルを作成してeclipseを介さずtomcat9上で動作させるとファイル名が文字化けしました。
最初はtomcatの設定の問題なのだと思ましたが、日本語の文字列送信は問題ありません。

正直、どこが問題なのか分からなくなっております。
どなたか原因が分かる方はいらっしゃるでしょうか。

日本語の文字列送信(問題なし)

javascript

1 2 var sendParam = function(){ 3 4 //ajax通信 5 $.ajax({ 6 type : "GET", 7 url : "urlSendParam", 8 data : {param : "日本語"}, 9 async : false, 10 contentType : "application/x-www-form-urlencoded; charset=UTF-8", //←これを追記で文字化け回避 11 success : function(data) { 12 console.log(data); 13 }, 14 error : function(XMLHttpRequest, textStatus, errorThrown) { 15 alert("リクエスト時になんらかのエラーが発生しました\n" + url + "\n" + textStatus +":\n" + errorThrown); 16 } 17 }); 18 19 }

ファイルアップロード

javascript

1 2 var uploadFile = function(){ 3 4 //フォームデータ 5 var form = new FormData(); 6 7 //ファイルオブジェクト追加 8 form.append('file', $("#idFile").files[0]); //ファイルオブジェクトなのでエンコードできない 9 10 //ajax通信 11 $.ajax({ 12 type : "POST", 13 url : "urlUploadFile", 14 data : formData, 15 async : false, 16 cache : false, 17 contentType : false, //false固定 18 processData : false, 19 dataType : "html", 20 success : function(data) { 21 console.log(data); 22 }, 23 error : function(XMLHttpRequest, textStatus, errorThrown) { 24 alert("リクエスト時になんらかのエラーが発生しました:" + textStatus +":\n" + errorThrown); 25 } 26 }); 27 } 28

ファイル受け取り側 ←ファイル名文字化け

java

1 2@WebServlet(urlPatterns={"/urlUploadFile"}) 3@MultipartConfig(location="/", maxFileSize=1024 * 1024 * 100) 4public class SvUploadFile extends HttpServlet { 5 6 private static final long serialVersionUID = 1L; 7 8 @Override 9 public void doPost (HttpServletRequest req, HttpServletResponse res) 10 throws ServletException, IOException { 11 12 //パート取得 13 Part part = req.getPart("file"); 14 15 //ファイル名取得 16 String name = this.getFileName(part); //文字化け 17 18 //ファイル書き込み 19 part.write("./" + name); 20 } 21 22 //ファイル名取得 23 private String getFileName(Part part) { 24 String name = null; 25 for (String dispotion : part.getHeader("Content-Disposition").split(";")) { 26 if (dispotion.trim().startsWith("filename")) { 27 name = dispotion.substring(dispotion.indexOf("=") + 1).replace("\"", "").trim(); 28 name = name.substring(name.lastIndexOf("\") + 1); 29 break; 30 } 31 } 32 return name; 33 } 34 35} 36

tomcatのserver.xml

xml

1 2 <Connector port="8080" protocol="HTTP/1.1" 3 connectionTimeout="20000" 4 redirectPort="8443" 5 useBodyEncodingForURI="true" /> 6 7 8 <!-- Define an AJP 1.3 Connector on port 8009 --> 9 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" useBodyEncodingForURI="true" /> 10 11

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/06/12 22:41

文字化けとは、どのような文字が、どのような文字になるのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問