Skip to content
This repository has been archived by the owner on May 8, 2023. It is now read-only.

jdbool/files

Repository files navigation

files

Simple file hosting server for Node.js. Stores file information in MongoDB and uploads in the file system.

Prerequisites

  • Node
  • MongoDB

Usage

Visiting / in a browser shows a single page where you can enter your token and upload files.

Admin

/admin in a browser will prompt for a username and password, and allows control of tokens and uploaded files.

API

Error Response

{
	"error": {
		"status": Number,
		"title": String,
		"detail": String
	}
}

Uploading

POST /upload

The Authorization header has to be a valid token, and the file should be called file (multipart/form-data).

Response (if OK):

{
	// 7 character long file ID
	"id": String,
	// MIME type
	"type": String,
	// Size in bytes
	"size": Number,
	// The IP you uploaded from
	"ip": String,
	// 64 character long key that can be used to delete the file
	"deleteKey": String,
	// MD5 file hash
	"hash": String,
	// Name of the file you uploaded
	"originalName": String
}

The file will then be accessible at GET /{id}.

Deleting

GET /delete/{id}/{deleteKey}

Uses GET so the link can be opened in a browser. If the request doesn't accept HTML, an OK response would be:

{
	"deleted": true,
	"type": String,
	"size": Number,
	"ip": String,
	// How many times the file was sent to a human (unless a bot was disguised as a browser)
	"hits": Number,
	// How many times it was sent to a bot
	"botHits": Number
}

Configuration

config.json has to be created, see config.sample.json.