memos/server/router
boojack b3e67399b8 feat(attachment): upload files in resumable chunks
Add UploadAttachment, a unary RPC that accepts a file in bounded chunks
and streams it to a temp file instead of holding the whole blob in one
request body and in memory. A call carrying a spec starts an upload and
returns an opaque upload_id; later calls carry that id with
write_offset,
data, and finish_write, following the Cloud Storage WriteObject shape.
Retrying the last chunk after a lost response is idempotent, uploads are
bound to their owner, and they expire after 30 minutes of inactivity.

CreateAttachment and the chunked finalize now share one processing
pipeline for motion-photo detection, EXIF stripping, and storage. The
motion-photo detector works over an io.ReaderAt so large JPEGs are never
loaded whole, and the request body cap is a single per-procedure lookup.

The web editor uploads through the new RPC in 2 MiB chunks with bounded
concurrency under the server's per-user limit.
2026-09-08 21:07:06 +08:00
..
api/v1 feat(attachment): upload files in resumable chunks 2026-09-08 21:07:06 +08:00
fileserver feat(spaces): add multi-space memo collaboration (#6228) 2026-08-23 19:36:50 +08:00
frontend refactor(server): remove RSS feed support (#6243) 2026-08-28 23:06:25 +08:00
mcp chore(mcp): satisfy revive lint rules 2026-09-04 08:19:44 +08:00