Code Monkey home page Code Monkey logo

xexes / postupload Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ringerc/postupload

0.0 1.0 0.0 644 KB

Web-based file upload application for hosting on your own server - like anonymous ftp with write-only uploads, or various file upload cloud services. Suitable for replacing email as a file transfer mechanism.

Home Page: http://blog.ringerc.id.au/2011/03/file-upload-webapp.html

Java 14.61% HTML 9.76% JavaScript 8.25% PHP 0.70% ActionScript 66.33% CSS 0.35%

postupload's Introduction

WHAT IS IT
==========

postupload is a complete web-based multi-file upload app that's intended to
replace abuse of email attachments for transferring large files.  It's
essentially a web-based anonymous-FTP-like dropbox with email notification.

The application uses Uploadify to handle multi-file uploads, introducing a
dependency on Adobe Flash. A single-file upload page without a flash
requirement is planned. In the longer term, support for plupload will be added
to enable use of the HTML5 file api for native multi-file uploads.

QUICKSTART (FOR TESTING AND TRYOUT ONLY)
========================================

Do not follow these instructions for production deployment. Please read
doc/README-DEPLOY.txt instead. These instructions are only for if you want to
take a really quick and dirty look at the app before deploying it properly.

Download the JDK from http://www.oracle.com/technetwork/java/javase/downloads/index.html and install it.

Download NetBeans 7 with Java from http://netbeans.org/community/releases/70/ . Make sure to
get the bundle that includes "Java Web and EE" support. Install it and the Glassfish server
it bundles.

Launch NetBeans, choose "File -> open project" and open the postupload source
folder. Click "Run project" or press F6. When prompted for the application
server to use, choose glassfish from the menu.

If this is the first time you've used Netbeans (or Maven) it'll spend quite a
while downloading library dependencies. Be patient. Once it's finished
downloading it'll compile the project, deploy it to the application server, and
open your default browser with the start page of the postupload application. 

There won't be any recipients listed, and you'll need to do some glassfish
setup before you can log in to the application's admin page to add them and to
set the output path, etc. See "CONFIGURING ACCESS CONTROL" in
doc/README-DEPLOY.txt. Once you've set up a login, visit
http://localhost:8080/postupload/faces/admin/configure.xhtml to set the app up.

WHY DOES POSTUPLOAD EXIST? WHAT IS IT FOR?
==========================================

This software was written for a newspaper to replace anonymous FTP and the
abuse of large email attachments. Most clients struggled to use or understand
FTP, and both clients and staff became increasingly frustrated with the
unreliability and unpredictable delivery times of large emails. An alternative
was needed, and the existing commercial options weren't deemed particularly
attractive.

There are many services that provide web-based facilities for sending large
files. There are rather fewer that provide a page allowing a user to accept
files from anybody. All of the sites I found that do offer such services have
one or more of the following issues:

- The web-based user interface can't batch download files. This is a limitation
  of current browsers, and probably a good one, but it means you need a desktop
  client.

- The desktop client is often Windows only, or at best also Mac OS X . The
  newspaper runs Linux thin clients in the sales department, so this is
  somewhat painful.

- There's no noninteractive client suitable for running on a file server to
  automatically download files as they're sent by clients.

- They don't offer a simple web api that could be used to easily implement
  such a client, or only offer it in an overpriced "Enterprise" version

- No "recipient address book" is offered; either all uploads go to a single
  recipient or the sender has to enter the recipient details each time.
  If a recipient address book is offered, it tends to come only in the
  expensive "enterprise" version.

- They want an unreasonable amount of money per month, and often per user.

HOW DOES POSTUPLOAD SOLVE THESE ISSUES?
=======================================

For the specific and admittedly narrow use case this software was written for,
postupload provides a simple way for clients to send files reliably and easily.
The files are automatically saved on a shared network volume where staff can
access them, so there's no need to jump through hoops with download clients and
web browsers.

It's easier than FTP, more reliable and faster than email, and cheaper than a
decent online upload service.

How do I use it?
================

Read doc/README-DEPLOY.txt for installation and use instructions

WHY USE JAVA ON THE SERVER SIDE?
================================

Postupload has a Java EE 6 server backend to receive the files, notify the
recipients, and track state. The user interface is all written in CSS, HTML,
and client-side JavaScript; there is NO CLIENT SIDE JAVA. Flash is used
client-side, which is almost worse.

Java was used for the server because other in-house projects are using it,
because Java EE 6 is really nice to use, and because its web services support
(JAX-RS) and JSON support saves a lot of time and hassle. In this regard Java
EE 6 is rather different to prior iterations of the standard - if you've been
horrified by Java EE before, you'll be reassured to know that Java EE 6 is a
very different beast. You don't need huge and expensive application server
software to run it, either - the free Glassfish server will do nicely.

postupload's People

Contributors

ringerc avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.