メインコンテンツまでスキップ

ファイルに書き込む(RAW)

ストリーミング書き込み

  • API の説明

    PUT /write_file?filename=[URL エンコード済みファイル名] HTTP/1.1

    [ファイルデータ]
    • ファイルのバイトストリームを直接受信します(base64 エンコードなし)。大きなファイルのアップロードに適しています
    • 対象ファイルがすでに存在する場合は上書きされます
  • 想定されるレスポンス

    • 成功:HTTP 204。レスポンスボディはありません
    • 失敗:
      • HTTP 400 + {"message":"invalid path"}(filename が指定されていない、またはパスが不正な場合)
      • HTTP 404 + {"message":"invalid path"}(対象のパスを作成できない場合)
      • HTTP 500 + {"message":"…"}
  • API を使用してデバイス上のスクリプトファイルへストリーミングで内容を書き込む Python 3.x の例(requests モジュールが必要):

    # -*- coding: utf-8 -*-
    import requests

    with open("r:/123.lua", "rb") as f:
    resp = requests.put("http://192.168.31.72:46952/write_file", params={"filename": "lua/scripts/123.lua"}, data=f, timeout=30)

    print(resp.status_code, resp.reason) # 成功時は 204 No Content
    if resp.status_code != 204:
    print(resp.text)

Base64 による書き込み

  • API の説明

    POST /write_file HTTP/1.1

    {"filename":"ファイル名","data":"内容の base64 エンコード文字列"}
  • 想定されるレスポンス

    {"code":0,"message":"操作成功"}
    {"code":4,"message":"无法写入文件"}
  • API を使用してデバイス上のスクリプトファイルへ内容を書き込む Python 3.x の例(requests モジュールが必要):

    # -*- coding: utf-8 -*-
    import base64
    import requests

    with open('r:/123.lua', 'rb') as f: # スクリプトファイルのパス。バイト列として直接読み込む
    resp = requests.post(
    "http://192.168.31.72:46952/write_file",
    json={
    "filename": "lua/scripts/123.lua",
    "data": base64.b64encode(f.read()).decode('utf-8') # バイト列を直接 base64 エンコードする
    },
    timeout=30,
    )

    print(resp.status_code, resp.reason) # 成功時は 200 OK
    print(resp.text)

補足

  • この API でファイル操作の基準となるルートディレクトリは /var/mobile/Media/1ferver/ です
  • ストリーミング書き込み API は 2025-07-11 以降のバージョンで利用できます