ファイルのアップロードAPIに関して
pythonでファイルのアップロードAPIを叩いていますが、ファイルがドライブにアップロードできません
1. ファイルはどのように送ればいいでしょうか?
パラメータ名の記載がなく、どのように添付すればいいのかAPIドキュメントではわからないのでご教示ください
2. Content-Typeはmultipart/mixedで大丈夫でだったでしょうか?
その際に、headerのboundaryにはどのような情報を設定すればよろしいでしょうか
3. Postmanを使用して送信した際に3011 Invalid data format になりますが、
アップロードするファイルのデータフォーマットはどのように判断されているのでしょうか?
file = ファイル選択で送信しております
ちなみにX-DRIVE-API-Typeにはreseller-apiのパラメータをセットしてあります
以上、よろしくお願いいたします
投稿に新しいコメントが追加されましたら通知を送信します。
コメント11
업데이트 된 답글입니다.
LINE WORKS 公式アカウント
"Content-Typeはmultipart/mixed" でのファイルの送付方法はRFC(https://tools.ietf.org/html/rfc2046)参照。
headerのboundaryに、区切り文字をご指定いただき、下記のように
bodyに、指定した区切り文字で区切ったファイル情報をご指定ください。
【body例(boundaryに”AbcdeFghjk”を指定した場合)】
--AbcdeFghjk
Content-Type: Image/Gif
Content-Transfer-Encoding: base64
Content-Description: Picture in Shibuya Office
Content-Disposition: attachment; filename="shibuya.gif"
<<Base64エンコードしたファイルの内容>>
--AbcdeFghjk
2018.02.08
업데이트 된 답글입니다.
能見大二郎__434139 投稿者
header部分にContent-Type: multipart/mixed;boundary="AbcdeFghjk"
body部に
--AbcdeFghjk
Content-Disposition: form-data; name="resourceName"
aaaaaaaa.pdf
--AbcdeFghjk
--AbcdeFghjk
Content-Type: application/pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="aaaaaaaa.pdf"
<<Base64エンコードしたファイルの内容>>
--AbcdeFghjk
として、送信しましたが、3011 Invalid data format となってしまいます
パラメータとファイルのデータは別々に送る必要がありますでしょうか?
2018.02.09
업데이트 된 답글입니다.
LINE WORKS 公式アカウント
ドキュメントに誤りがあり"toParentKey"のパラメータは必須となっております。大変申し訳ございません。
(デフォルトでかまわない場合、"root"をご指定いただければと思います。)
また、ご案内遅れましたが、PUTメソッドでは、
"toParentKey"などのパラメータはクエリストリングで指定、
Content-typeに送付するファイルのContent-typeを指定、
Bodyにファイルの内容を指定、
で対象のAPIをご利用頂けます。
ご確認くださいませ。
2018.02.09
업데이트 된 답글입니다.
能見大二郎__434139 投稿者
以下のcurlコマンドで送信したのですが、一時的にファイルがロックされた状態でつくられるものの、最終的にはエラーになってしまいます
-----------------------------------------------------------------------------------------------
curl -X POST -H 'consumerKey:[コンシューマキー]' -H 'Content-Type:multipart/mixed;boundary=bound@ry_' -H 'Authorization: Bearer [ユーザーのaccess_token]' -H 'X-DRIVE-API-TYPE: reseller-api' --data 'isRetResouceKey=true&resourceName=aaa.txt&toParentKey=root&writeMode=overwrite' --data 'Content-Transfer-Encoding: base64\rContent-Disposition: attachment; name="file"; filename="aaa.txt"\rContent-Type: text/plain\r\rMQo=\r------------bound@ry_--\r'
-s -v -k https://jp1-file.drive.worksmobile.com/file/upload.api
-----------------------------------------------------------------------------------------------
* upload completely sent off: 287 out of 287 bytes
* Empty reply from server
* Connection #0 to host jp1-file.drive.worksmobile.com left intact
レスポンスが帰ってきていないようなのですが、何かわかりますでしょうか
2018.02.13
업데이트 된 답글입니다.
能見大二郎__434139 投稿者
requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine("''",))
となってしまう件も同様の問題になりますでしょうか?
2018.02.13
업데이트 된 답글입니다.
LINE WORKS 公式アカウント
ドキュメントが分かりにくく申し訳ないのですが、POSTをご利用の場合、パラメータは個々に設定いただく必要があります。
============================
・・・(前略)
--[boundary荷指定した文字列]
Content-Disposition: form-data; name="resourceName"
filename.pdf
--[boundary荷指定した文字列]
Content-Disposition: form-data; name="toParentKey"
root
--[boundary荷指定した文字列]
Content-Disposition: form-data; name="writeMode"
none
--[boundary荷指定した文字列]
・・・(後略)
============================
ただ、ご指摘いただいた使い方の場合、エラーの返し方がよろしくないことには間違いないので追って修正させていただきます。
POSTについては、他の不具合も確認させていただきますので、PUTをご利用して試していただくことは可能でしょうか。
PUTの場合には、前述の通りURLのQueryにAPI指定のパラメータ設定、BODYに送付するファイルの内容を
お送りいただければファイルアップロードが可能です。
お手数をおかけしてしまい大変申し訳ございません。
2018.02.15
업데이트 된 답글입니다.
能見大二郎__434139 投稿者
============================
curl -X PUT -H 'consumerKey:[コンシューマキー]' -H 'Content-Type:multipart/mixed;boundary=bound@ry_' -H 'Authorization: Bearerr [ユーザーのaccess_token]' -H 'X-DRIVE-API-TYPE: reseller-api' --data '--bound@ry_\r\nContent-Type: text/plain\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment; name="file";filename="aaa.txt"\r\n\r\nMQ==\r\n\r\n--bound@ry_' --url 'https://jp1-file.drive.worksmobile.com/file/upload.api?toParentKey=root&resourceName=aaa.txt&writeMode=overwrite&isRetResouceKey=true'
============================
ちなみにアップロードに成功したテキストファイルをダウンロードしてきて
テキストエディタで確認するとの中身はこうなっています
============================
--bound@ry_
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Disposition: attachment; name="file";filename="aaa.txt"
MQ==
--bound@ry_
============================
2018.02.16
업데이트 된 답글입니다.
能見大二郎__434139 投稿者
https://hogehoge.tk/tool/
2018.02.16
업데이트 된 답글입니다.
LINE WORKS 公式アカウント
・APIに必要な各パラメータ("toParentKey"など)をQueryに指定
・HeaderのContent-Type等には、アップロードするファイルについての内容を指定
・Bodyにファイルの内容を指定
となります。
例えば、下記の通りリクエストを送付した場合、
==========
PUT /file/upload.api?toParentKey=root&resourceName=aaa.txt&writeMode=overwrite&isRetResouceKey=true HTTP/1.1
Host: jp1-file.drive.worksmobile.com
X-DRIVE-API-TYPE: reseller-api
consumerKey: [コンシューマーキー]
Authorization: Bearer [ユーザのアクセストークン]
Content-Type: text/plain; charset=UTF-8
(中略)
aaaaa
==========
「aaaaa」という内容で「aaa.txt」のファイル名の、テキストファイルが作成されます。
※base64エンコードは必須ではございません。例示で利用して混乱を招いてしまい申し訳ございませんでした。
2018.02.16
업데이트 된 답글입니다.
能見大二郎__434139 投稿者
アップロードできるようになりました。
また、別件で申し訳ないのですが、ファイルを共有したリンクURL(短縮URL)からresourceKeyを特定する方法はありますでしょうか?
2018.02.19
업데이트 된 답글입니다.
LINE WORKS 公式アカウント
共有されたリンクのURLからresourceKeyを特定する方法はございません。
ご了承ください。
2018.02.19
まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。