= Indexing Local Photo Stores with Jumploader = From the [http://jumploader.com Jumploader Website]: >!JumpLoader is a Java applet designed to upload files from the client to a server. This is a valuable replacement for rudiment of HTML. >This is suitable tool for webmasters who wish to provide a better way for users to upload files to their websites. This could be photo galleries, web hosting providers or any kind of service that requires user files retrieval. >!JumpLoader is free. == Feature Set == While not being free in the sense of FOSS software, Jumploader offers an impressing set of features. Some of them are especially interesting for picurl: * Upload utilizing HTTP(S) protocol. * Client side image transformation (i.e. scale, rotate) on upload. * Image thumbnail support. * Integrated file system browser. * Browser cookie support. * Unlimited file count. * Unlimited file(s) length. * Concurrent upload of multiple files. * Upload progress monitor. * Upload directories. * Resume broken uploads. * Internationalization. * Custom attributes. * Partitioned file upload. * Configure constraints for files allowed to upload (file name pattern, file length, total length). * Manage queue (add, remove, abort, retry files), even while uploading. * Add files using preferred way: drag and drop, standard file dialog or integrated file system browser (see screenshots). * Configurable upload options (target URL, request parameters). * Receive custom errors from server. * Javascript callbacks (notifications). (excerped from [http://jumploader.com Jumploader.com]) == Discussion of interesting features == === Scaled image upload === With Jumploader, the user doesn't need to upload the big, megapixel-sized JPEG files from his hard disk. If enabled in its configuration, Jumploader will scale down JPEG size to the configured size and save a lot of bandwith. Currently there is an issue with Java !OutOfMemory Errors when scaling really big JPEG files, but the author works on it [http://jumploader.com/forum/viewtopic.php?t=1910 Bug Report in Jumploader Forum] === Partitioned Upload === Often web server configuration limits the maximum size of file uploads (e.g. 16 MB). Jumploader can circumvent this by splitting the uploaded file into smaller parts and send them with multiple requests. With each chunk, some identification is sent so that the server application can re-assemble the file out of the chunks [http://jumploader.com/doc_partupload.html Partitioned Upload explained]. But how does this help us? the chunk size can be arbitrary small (e.g. 75kb). So we could upload the first 75kb of each Photo file, perform metadata extraction on the server and then go on with the next file. If the first 75kb were insufficient for this, we can request another chunk. This can be done via Javascript Interface and custom errors. [http://jumploader.com/forum/viewtopic.php?t=1839&highlight=partitioned Jumploader Forum Entry on the Problem] === Syncing Store Contents === The [http://jumploader.com/api/jmaster/jumploader/model/api/file/IFile.html Jumploader IFile Interface] allows to access file name, type and size via Javascript. Thus, we can issue a JSON request to the picurl server with all files and their sizes contained in the store BEFORE the upload takes place. The server could respond with a list of not-yet-indexed files (i.e. the files in the store minus the already indexed files). Then Jumploader could remove all obsolete (i.e. indexed and unchanged) files from the upload queue. === EXIF and IPTC Support === Jumploader also offers EXIF and IPTC Support. When activated, the Metadata is extracted by Jumploader, converted to an XML string and sent to the server along with the upload. The EXIF/IPTC capabilities are not too bad (even detecting GPS Tags), but unfortunately all values appear interpretated (e.g. ''"Orientation: Top, left side (Horizontal / normal)"''. Check an example of a JumploaderExifDump. Metadata extraction is only available with JPEG files. === Javascript Interface === Allows to control many aspects of the upload. - [http://jumploader.com/doc_interface.html Jumploader Javascript API] - [http://code.google.com/p/jljs/ Utility Library for Programming Jumploader]