cancel
Showing results for 
Search instead for 
Did you mean: 

【ご質問】WebAPI での単一ファイルアプロードについて

RumiShimizu
Level 3

表記の件、
curl コマンドにて、
「1画像ファイルを指定、画像変換結果のファイルを受信」
上記処理を行うAPIを呼び出し、問題なく動作することを確認した上で、
同様の処理を、
Blue Prism 7.1 のWebAPI機能を利用して実装したいと考え、設定を行いました。

WebAPIのURL指定等は問題なくできており、サーバ接続はできているのですが、
サーバから、下記エラーが返却されます。

 Internal : 予期しないエラー Web API HTTPリクエスト中のエラー
 HTTPステータスコード:400
 HTTPレスポンスコンテンツ:{"result":"FAILED","data":{"error_code":400004,"error_message":"Bad Request: no files uploaded"}}

WebAPI側の設定は、「単一ファイル」を指定、
呼び出すプロセス側では、送信ファイルのバイナリ情報を設定していますが、
ファイルのアップロードが的確にできていないように思われます。

解決方法を教えていただきたく、よろしくお願いいたします。

===================================================================================
補足:
気になる点として、APIの仕様書では、単一ファイルアップロードにも関わらず、
ヘッダー情報で、
Content-Type: multipart/form-data
を指定する旨記載されているため、その通り指定しております。

また、念のため、WebAPI側の設定は、「複数ファイル」指定に変更して、
引数に、ファイル情報の collection を指定して実施してみましたが、
サーバから返却されるエラーメッセージに変更はありませんでした。

===================================================================================
補足2:

WebAPI側の設で、「単一ファイル」「複数ファイル」指定変更がNGだったため、
リクエストの本文のコンテンツ で「テンプレート」を指定し、
下記情報を記載して実施してみましたが、
サーバから返却されるエラーメッセージに変更はありませんでした。
「file」は、画像ファイルを読み込んだバイナリ情報です。

[boundary]
Content-Disposition: form-data; name="file"; filename="sei.jpg"
Content-Type: application/octet-stream

[file]
[boundary]


5 REPLIES 5

thosokawa
Staff
Staff
Shimizu様

お世話になっております。
Blue Prism 細川と申します。

本件ですが、こちらに関連する内容かと思います。

https://community.blueprism.com/communities/community-home/digestviewer/viewthread?MessageKey=1a69cf75-05f1-40e9-a511-a47762c6b43f&CommunityKey=3b501789-976c-4cfa-b9db-88307c6a0a86&tab=digestviewer

-- 一部抜粋
I can confirm that Blue Prism native Web Services API feature does not currently support binary data in any multipart/form-data implementation, as there exists an implicit conversion so that all binary data is converted to Base64 encoding in the process. There does not appear to be a way to override this behaviour.

When you encounter binary data in an endpoint requires multipart/form-data, please consider the following:
  1. Do I have the option to achieve the same without using multipart/form-data? Many API endpoints do offer such flexibility, e.g. Microsoft Cognitive Services > Analyze Image endpoint.
  2. Consider use a code stage to achieve this. If you need an example of this, please see https://briangrinstead.com/blog/multipart-form-post-in-c/.
--

こちらにあります通り、残念ながら現状バイナリファイルはサポートされていないため、
コードステージ等でご対応いただけますと幸いです。

なお現在、Blue Prism 公式 Noteにて本件(バイナリファイルのアップロード・ダウウンロード)に
関連する記事を準備しておりますので、準備が整いましたら別途ご連絡を差し上げます。

以上、よろしくお願いいたします。

------------------------------
Takuma Hosokawa
Solutions Consulting
Blue Prism
------------------------------

RumiShimizu
Level 3

Blue Prism 細川様

ご回答、ありがとうございます。
現状バイナリファイルはサポートされていないとのこと、了解いたしました!

対応された際には、ぜひとも利用させていただきたく、よろしくお願いいたします。

追伸:
 コードステージにて、「curl コマンドでAPI実行する .bat ファイル」を呼び出すようにし、
 取得したJsonファイル情報を、Utility - JSON::JSON to Collection を利用して、
 地道に解析することで対応いたしました。

thosokawa
Staff
Staff

Shimizu様

お世話になっております。
Blue Prism 細川です。

お伝えしておりました、本件に関連する記事を公式Noteにアップいたしました。

#記事後半部分となります。

 

https://note.com/blueprism/n/n3b331762a3d0

 

ご確認いただけますと幸いです。

よろしくお願いいたします。

------------------------------
Takuma Hosokawa
Solutions Consulting
Blue Prism
------------------------------

RumiShimizu
Level 3

Blue Prism 細川様

コードステージの利用により、Blue Prism 上のみで(curlコマンドの利用等が不要で)、
バイナリデータのファイルがアップロードができる、との情報共有をいただき、ありがとうございます。

実際に書いてみたところ、無事バイナリデータのファイルアップロードについて
サーバ側がリクエストを正常受信してくれ、サーバからの正常なレスポンスが受信できることを確認いたしました。

実は、ファイルアップロードと共に、Blue PrismのWebAPI機能を利用したいと考えた理由はもう一つあり、
WebAPI機能の場合、レスポンス情報がJson形式であった場合、
$.data.・・・

といった形で、Jsonの中の一部の情報を切り出して格納するのが容易そうに思えた点にあります。

こちらは、コードステージ利用でレスポンス情報を取得した場合、一旦テキストデータとして受け取り、
Json形式のコレクションデータに変換格納した後、
必要なデータは順番を追って(親→子)で値を確認していく必要があるという点は
既存から変わりがないでしょうか。

もし、簡単にJson情報の一部を直接取り出せるような方法がございましたら
教えていただけるとありがたいです。

以上、よろしくお願いいたします。

thosokawa
Staff
Staff
Shimizu様

お世話になっております。
Blue Prism 細川です。

>既存から変わりがないでしょうか。
はい、ご認識の通りとなります。
使用方法例につきましては、以下の記事をご確認ください。

ソリューション連携 第1回 - Jira -
https://note.com/blueprism/n/ndf1d9aa03bcc
ソリューション連携 第2回 - kintone -
https://note.com/blueprism/n/n3b331762a3d0

なお(第1回の)記事中にも記載いたしましたが、現状Collection内のJSON:Arrayを
直接ご確認頂くには言語モードをEnglishにしていただく必要がございます。
#こちら既知の不具合で、現在開発チームに改善要望を挙げております。


以上、よろしくお願いいたします。
------------------------------
Takuma Hosokawa
Solutions Consulting
Blue Prism
------------------------------