Skip to main content

Write a File (RAW)

Streamed Write

  • Description

    PUT /write_file?filename=[URL-encoded-filename] HTTP/1.1

    [file data]
    • Accepts raw file bytes (not base64-encoded), suitable for large uploads
    • Overwrites the target if it already exists
  • Possible Responses

    • Success: HTTP 204, no response body
    • Failure:
      • HTTP 400 + {"message":"invalid path"} (missing filename or invalid path)
      • HTTP 404 + {"message":"invalid path"} (cannot create the target path)
      • HTTP 500 + {"message":"…"}
  • Python 3.x example for streaming content to a script file (requires 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 on success
    if resp.status_code != 204:
    print(resp.text)

Base64 Write

  • Description

    POST /write_file HTTP/1.1

    {"filename":"file name","data":"base64-encoded content"}
  • Possible Responses

    {"code":0,"message":"Success"}
    {"code":4,"message":"Unable to write file"}
  • Python 3.x example to write content to a script file (requires requests):

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

    with open('r:/123.lua', 'rb') as f: # script file path, read raw bytes directly
    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')
    },
    timeout=30,
    )

    print(resp.status_code, resp.reason) # 200 OK on success
    print(resp.text)

Notes

  • The root directory for both write methods is /var/mobile/Media/1ferver/
  • The streamed write endpoint is available in versions after 2025-07-11