コミュニティ

LINE WORKSのテクニカルエキスパート及び開発者と
コードのサンプル、リソース、Tip等を共有し問題解決への相談が可能です。

??dev_메인_타이틀_모바일_ja_JP??

Drive

Driveへのファイルアップロード

orita

2020.06.02既読 1113

【APIを使用してのファイルのアップロード方法】

1.個人のローカルに存在するファイルを個人のDriveへアップロードすることは可能でしょうか。

   可能な場合、RequestURLhttps://file.drive.worksmobile.com/drive/rl/{resourceLocation}/v2/files」の{resourceLocation}には何を設定する必要があるのでしょうか。

2.上記の応用でグループDriveにファイルをアップロードすることは可能でしょうか。

3.アップロードするファイルの拡張子に制限はありますでしょうか。

初心者で何も分からない状態です。

コミュニティで上記内容の質問を探してみたのですが、見つからず困っております。

お分かりの方がいらっしゃいましたら、お教え願います。


コメント14

  • LINE WORKS 公式アカウント

    以下に回答させていただきます。
    1:
    Filedata をローカルのパスで指定すれば、ローカルファイルをアップロードすることが可能です。
    resourceLocation につきましては下記ページの API 共通情報の項目を参考に設定を行ってください。
    https://developers.worksmobile.com/jp/document/1008001?lang=ja
    2:
    グループフォルダにアップロードするには toParentKey にグループフォルダの resourceKey を指定します。
    resourceKey はグループフォルダのリストの閲覧 API で取得できます。
    https://developers.worksmobile.com/jp/document/1008019?lang=ja

    ただし、Service API Access Token を発行したユーザがグループに所属している必要があります。
    3:
    アップロードするファイルの拡張子制限につきましては、管理者画面での設定が反映されます。
    https://guide.worksmobile.com/ja/admin/pc-admin-guide/security/file-security/

    2020.06.02

    0
  • orita 投稿者

    ご回答ありがとうございます。
    ファイルアップロードの際に、
    「userid not exist」のエラーが発生するのですが、
    原因が分かりません。

    LINEWORKSにユーザー自体は存在するのですが、何が原因として考えられますでしょうか。

    2020.06.04

    0
  • orita 投稿者

    設定した値としましては、

    URL:https://file.drive.worksmobile.com/drive/rl/{resourceLocation}/drive/v2/files/root}/v2/files
    (「https://apis.worksmobile.com/r/{API ID}/drive/v2/files/root」で取得したresourceLocationを使用)

    X-DRIVE-API-TYPE:reseller-api
    ConsumerKey:[ConsumerKey]
    Authorization:Bearer [Service Token]
    Content-Type:multipart/form-data; boundary="Abcdefg”; charset=UTF-8

    --Abcdefg
    Content-Disposition: form-data; name="toParentKey"

    [resourceLocationと一緒に取得したresourceKey]
    --Abcdefg
    Content-Disposition: form-data; name="resourceName"

    test.txt
    --Abcdefg
    Content-Disposition: form-data; name="writeMode"

    none
    --Abcdefg
    Content-Disposition: form-data; name="Filedata"; filename="test.txt"
    Content-Type: text/plain; charset=UTF-8

    aaaa
    --Abcdefg--

    2020.06.05

    0
  • LINE WORKS 公式アカウント

    Query Parameter の一番最後に "Filedata" を追加し、"Filename" で ローカルパスを追加します。

    Raw-FileData
    --$boundary
    Content-Disposition: form-data; name="Filedata"; filename="/C:/Users/xxxxx/Desktop/test.xlsx"

    userid not exist error ですが、アカウントが有効になっていない可能性がございます。
    対象のアカウントでログインし、サービスの利用を開始してからお試しください。

    2020.06.09

    0
  • orita 投稿者

     --$boundary
     Content-Disposition: form-data; name="Filedata"; filename="test.txt"
     Content-Type: text/plain; charset=UTF-8

     aaaa
     --$boundary--

    ここが、
     --$boundary
     Content-Disposition: form-data; name="Filedata"; filename="/C:/Users/xxxxx/Desktop/test.xlsx"
     
     --$boundary--
     上記の状態で可能という認識で相違ないでしょうか。

    また、userid not exist に関しては、
    対象アカウントでログインし、サービスの利用開始は完了している状態で実行しております。

    2020.06.09

    0
  • LINE WORKS 公式アカウント

    ローカルパスについてはご認識の通りです。

    Drive へのファイルアップロード API を利用する際の、Http Method をご確認いただけますでしょうか。
    ファイルのアップロード API は POST 形式で、Content-Type は multipart/form-data になります。
    https://developers.worksmobile.com/jp/document/1008037?lang=ja

    また、Header 情報の consumerKey と authorization token の設定も合わせてご確認ください。
    https://developers.worksmobile.com/jp/document/3002003?lang=ja

    2020.06.09

    0
  • orita 投稿者

    Drive へのファイルアップロード API を利用する際のHttp Method
    及び、ファイルのアップロード API は POST 形式で、Content-Type は multipart/form-dataについて確認しましたが、
    問題ないかと思います。

    また、Header 情報の consumerKey と authorization tokenも問題ないかと思います。
    ファイルダウンロード等は可能で、ファイルのアップロードのみ上記事象が起こる状態です。

    2020.06.09

    0
  • orita 投稿者

    ファイルのアップロードまではうまくいったのですが、
    EXCELファイルやPDFファイル等をアップしたところ、中身が壊れているようで正しく表示されません。

    各アップロードファイルに合わせてBODY部分のContent-Type(下記参照)を変更して
    アップロードしているのですが、原因がお分かりでしたらお教え願えますでしょうか。
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    Content-Disposition: form-data; name="Filedata"; filename="ファイル名"
    Content-Type: 各ファイルに合わせたContent-Typeを設定
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

    ちなみに、
    各ファイルデータはBINARYデータにしてアップロードしています。
    CSVファイルはcharsetを設定したことで正しくアップロードできました。

    2020.07.16

    0
  • LINE WORKS 公式アカウント

    アップロード時にファイルが壊れてしまうとのことですが、こちらでも確認いたしましたが正常にアップロードすることができました。

    以下の事項をお試しください。
    ファイルをバイナリデータに変換せず、そのままアップロードをお試しください。
    resourceName で Content-Type の拡張子を指定しているかどうかをご確認ください。
    アップロードするファイルをファイル容量の小さいファイルでお試しください。
    また、fileSize パラメータを指定せずにアップロードをお試しください。

    2020.07.16

    0
  • orita 投稿者

    ・ファイルをバイナリデータに変換せず、そのままアップロードをお試しください。
     ⇒そのままというのは、filename="/C:/Users/xxxxx/Desktop/test.xlsx"というようにファイルパスを設定する認識でお間違いないでしょうか。

    ・resourceName で Content-Type の拡張子を指定しているかどうかをご確認ください。
     ⇒FiledataのContent-Typeはアップロードするファイルに沿って変更しております。

    ・アップロードするファイルをファイル容量の小さいファイルでお試しください。
     ⇒試してみましたが、無理でした。

    ・また、fileSize パラメータを指定せずにアップロードをお試しください。
     ⇒fileSizeパラメータは指定せずにアップロードしましたが無理でした。

    2020.07.17

    0
  • orita 投稿者

    Content-Type:multipart/form-data; boundary="$boundary”; charset=UTF-8
    設定する際にboundaryに「””」は含まない想定なのですが、もし含んでいた場合、エラーになったりするのでしょうか。

    下記、①は不可なのか知りたいです。
    実行してみて①の場合にエラーが発生しているのですが、boundaryの設定方法が原因なのか分からないので、
    お分かりであればお教えいただきたいです。
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    ①Content-Type:multipart/form-data; boundary=”ABCDE”; charset=UTF-8
    ②Content-Type:multipart/form-data; boundary=ABCDE; charset=UTF-8
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

    2020.07.17

    0
  • orita 投稿者

    EXCELファイルとMP4ファイルのアップロードについてお聞きしたいです。
    アップロード自体はうまくいって、Drive上でファイル内容の閲覧はできるのですが、
    ダウンロードするとファイルが壊れていると表示され、
    中身の確認ができません。

    Content-Typeは問題ないはずなのですが、原因として何が考えられますでしょうか。
    ちなみにEXCELファイルとMP4ファイルをZIPファイルにしてアップロードしたところ、ダウンロードして後にファイルを確認しましたが、
    問題なく閲覧できました。
    ZIPファイルだと問題ないので、Content-Typeの問題かと思いましたが、特に原因となるようなことは見つかりませんでした。

    2020.07.22

    0
  • orita 投稿者

    上記、解決しました。
    BODY部分の最後の区切り文字の前に改行が2行必要でした。

    ファイルをBINARY型で読み込んでおり、
    改行1行だとファイルの中身と区切り文字の間が正しく認識されていなかったようです。

    2020.07.31

    0
  • LINE WORKS 公式アカウント

    詳細なご報告ありがとうございます。
    解決したとのことで、良かったです。

    なお、ダブルクォート(")は boundary に使用できる文字列ではありません。
    boundary に使用できる文字列は RFC で定められている MINE 型が使用できる文字列のみとなります。
    ユーザ様の記事となりますが、こちらの記事で解説しておりましたのでよろしければご参考ください。
    https://qiita.com/kunihiros/items/e11daacfd62d85d83c06

    2020.08.03

    1
前の投稿 Power AutomateでのトークBot作成
次の投稿メッセージが受信できません