1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-12-26 01:50:29 +00:00
CC-Tweaked/doc/events/file_transfer.md
Jonathan Coates 895bc7721a
License CC:T according to the REUSE specification (#1351)
This adds SPDX license headers to all source code files, following the
REUSE[1] specification. This does not include any asset files (such as
generated JSON files, or textures). While REUSE does support doing so
with ".license" files, for now we define these licences using the
.reuse/dep5 file.

[1]: https://reuse.software/
2023-03-15 21:52:13 +00:00

1.3 KiB

module: [kind=event] file_transfer since: 1.101.0

The @{file_transfer} event is queued when a user drags-and-drops a file on an open computer.

This event contains a single argument of type @{TransferredFiles}, which can be used to @{TransferredFiles.getFiles|get the files to be transferred}. Each file returned is a @{fs.BinaryReadHandle|binary file handle} with an additional @{TransferredFile.getName|getName} method.

Return values

  1. @{string}: The event name
  2. @{TransferredFiles}: The list of transferred files.

Example

Waits for a user to drop files on top of the computer, then prints the list of files and the size of each file.

local _, files = os.pullEvent("file_transfer")
for _, file in ipairs(files.getFiles()) do
  -- Seek to the end of the file to get its size, then go back to the beginning.
  local size = file.seek("end")
  file.seek("set", 0)

  print(file.getName() .. " " .. file.getSize())
end

Example

Save each transferred file to the computer's storage.

local _, files = os.pullEvent("file_transfer")
for _, file in ipairs(files.getFiles()) do
  local handle = fs.open(file.getName(), "wb")
  handle.write(file.readAll())

  handle.close()
  file.close()
end