Ask HN: How to handle user file uploads?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • Uppy

    The next open source file uploader for web browsers :dog:

  • Look at https://uppy.io/ open source and lot of integrations. You can keep moving to different levels of abstraction as required and see some good practices of how things are done.

  • magika

    Detect file content types with deep learning

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • Smithereen

    Federated, ActivityPub-compatible social network server with friends, walls, and groups.

  • In my project[1], I convert all user-uploaded images to high-quality webp and store them like that. I discard the original files after the conversion. I use imgproxy[2] to further resize and convert them on the fly for actual display.

    I don't do videos yet, but I'm kinda terrified of the idea of putting user-uploaded files through ffmpeg if/when I'll support them.

    [1] https://github.com/grishka/Smithereen

    [2] https://github.com/imgproxy/imgproxy

  • imgproxy

    Fast and secure standalone server for resizing and converting remote images

  • In my project[1], I convert all user-uploaded images to high-quality webp and store them like that. I discard the original files after the conversion. I use imgproxy[2] to further resize and convert them on the fly for actual display.

    I don't do videos yet, but I'm kinda terrified of the idea of putting user-uploaded files through ffmpeg if/when I'll support them.

    [1] https://github.com/grishka/Smithereen

    [2] https://github.com/imgproxy/imgproxy

  • libvips

    A fast image processing library with low memory needs.

  • Read through the comments and was surprised no one mentioned libvips - https://github.com/libvips/libvips. At my current small company we were trying to allow image uploads and started with imagemagick but certain images took too long to process and we were looking for faster alternatives. It's a great tool with minimum overhead. For video thumbnails, we use ffmpeg which is really heavy. We off-load video thumbnail generation to a queue. We've had great luck with these tools.

  • imagor

    Fast, secure image processing server and Go library, using libvips

  • I have used https://github.com/cshum/imagor infront of S3 before and liked it, there is many (some commercial) offerings for this

  • tus-js-client

    A pure JavaScript client for the tus resumable upload protocol

  • We map the TUS[0] protocol to S3 multipart upload operations. This lets us obscure the S3 bucket from the client. The TUS operations are handled by a dedicated micro-service. It could be done in a Lambda or anything.

    Once the upload completes we kick off a workflow to virus scan, unzip, decrypt, and process the file depending on what it is.

    For virus scanning, we started with ClamAV[1], but eventually bought a Trend Micro product[2] for reasons that probably don't apply to you. It is serverless based on SQS, Lambda, and SNS. Works fine.

    Once scanned, we do a number of things. For images that you are going to serve back out, you for sure want to re-encode those and strip metadata. I haven't worked directly on that part.

    [0] https://tus.io/

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • SwiftVips

    A lightning fast image processing and resizing library for Swift

  • +1 to vips! It's amazingly fast and stable. I even wrote (some minimal) Swift bindings for it to be used with a Swift backend: https://github.com/gh123man/SwiftVips

  • photo_id_resizer

    Resize photo ID images using face recognition technology

  • Slight OT...

    I created a program for profile pictures. It uses face recognition technology as to not deform faces when resizing photos. This may be useful to you.

    https://github.com/jftuga/photo_id_resizer

  • meson

    The Meson Build System

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Go Image Converting

    3 projects | /r/golang | 9 Mar 2023
  • Image optimization in Full Stack apps?

    2 projects | /r/webdev | 26 Feb 2021
  • Libvips: A fast image processing library with low memory needs

    1 project | news.ycombinator.com | 7 Jan 2024
  • Things you might not know about Next Image

    2 projects | dev.to | 22 Jun 2023
  • Seeking Recommendations: Selfhosted Tools for Automated Image Processing with Optimal File Size and Resolution for Web (Desktop, Tablet, Mobile)

    1 project | /r/selfhosted | 10 May 2023