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

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

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

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

受付中

iOSアプリからWebアプリへのファイルアップロードでFileがnullになる

nok123
nok123

総合スコア11

Java

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

1回答

0評価

0クリップ

513閲覧

投稿2020/11/18 14:12

Struts2のアップデート(2.3⇒2.5)を行った影響で、
Swiftで実装したiOSアプリからのファイルアップロードができなくなってしまいました。

Client:iOS14.1
Server:開発環境(Windows10, Tomcat8, Struts2.5)

iPhoneから写真を撮影し、Zip化したファイルと付加情報をWebサーバへ転送する流れになっています。

サーバ側はEclipseでTomcatを起動しているため、ブレイクポイントを置いて確認したところ、
付加情報は取得できているのにファイルが取得できていませんでした。

同様の機能でWebページからのリクエストのものもありますが、
こちらはクライアント側の修正なしに正常に動作しています。

何か解消に直結することでなくても構いませんので、
お力を貸していただきたいです。

サーバ側

java

@ParentPackage(value=AbstractAppAction .PARENT_PACKAGE) @Results ({ @Result(name = UploadFileFromiOSAction .RESPONCE, value = "/WEB-INF/content/api/responce.jsp"), @Result(name = UploadFileFromiOSAction .EMPTY, value = "/WEB-INF/content/api/empty.jsp") }) @Action(value="uploadFileFromiOS") public class UploadFileFromiOSAction extends AbstractAppAction { public static final String RESPONCE = "responce"; public String info1; public String info2; private File inputImg = null; private String inputImgContentType = null; private String inputImgFileName = null; private String response; @Override public String subExecute() throws Exception { if (inputImg == null) { throw new DataAccessException("登録するファイルが見つかりません"); } ~~ 省略 ~~ JSONObject resJson = new JSONObject(); resJson.put("result1", result1); resJson.put("result2", result2); this.response = resJson.toString(); return UploadFileFromiOSAction.RESPONCE; } public File getInputImg() { return inputImg; } public void setInputImg(File inputImg) { this.inputImg = inputImg; } public String getInputImgContentType() { return inputImgContentType; } public void setInputImgContentType(String inputImgContentType) { this.inputImgContentType = inputImgContentType; } public String getInputImgFileName() { return inputImgFileName; } public void setInputImgFileName(String inputImgFileName) { this.inputImgFileName = inputImgFileName; } public String getResponse() { return response; } public void setResponse(String response) { this.response = response; } }

クライアント側

swift

class FileUploadService : NSObject { func execute(_ data:Data, info1: String, info2: String) -> Bool { let method : String = "execute" var str = ApplicationConfig.sharedInstance.uploadUrl + "?info1=" + info1+ "&info2=" + info2 let encodedStr = str.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) let url = URL(string:encodedStr!) let urlRequest : NSMutableURLRequest = NSMutableURLRequest() if let u = url { urlRequest.url = u urlRequest.httpMethod = "POST" urlRequest.timeoutInterval = 30.0 } let uniqueId = ProcessInfo.processInfo.globallyUniqueString let body: NSMutableData = NSMutableData() var postData :String = String() let boundary:String = "---------------------------(uniqueId)" urlRequest.addValue("multipart/form-data; boundary=(boundary)", forHTTPHeaderField: "Content-Type") //(1) postData += "--(boundary)\r\n" postData += "Content-Disposition: form-data; name=\"inputImg\"; filename=\"test.zip\"\r\n" //(2) postData += "Content-Type: zip\r\n\r\n" body.append(postData.data(using: String.Encoding.utf8)!) body.append(data) postData = String() postData += "\r\n" postData += "\r\n--(boundary)--\r\n" body.append(postData.data(using: String.Encoding.utf8)!) //(3) urlRequest.httpBody = NSData(data:body as Data) as Data let session = URLSession.shared let task: URLSessionDataTask = session.dataTask(with: urlRequest as URLRequest, completionHandler: { data, request, error in ~~ 省略 ~~ }) task.resume() return true } }

よろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています