JumpLoader
Java File Upload Applet

Demo

JavaScript callbacks and interface usage

Events:

  

Code:
                  <p>
                    <applet id="jumpLoaderApplet" name="jumpLoaderApplet"
	code="jmaster.jumploader.app.JumpLoaderApplet.class"
	archive="jumploader_z.jar"
	width="715"
	height="450"
	mayscript>
		<param name="uc_uploadUrl" value="partitionedUploadHandler.php"/>

		<param name="ac_fireAppletInitialized" value="true"/>
		<param name="ac_fireUploaderFileAdded" value="true"/>
		<param name="ac_fireUploaderFileRemoved" value="true"/>
        <param name="ac_fireUploaderFileMoved" value="true"/>
		<param name="ac_fireUploaderFileStatusChanged" value="true"/>
		<param name="ac_fireUploaderFilesReset" value="true"/>
		<param name="ac_fireUploaderStatusChanged" value="true"/>
		<param name="ac_fireUploaderFilePartitionUploaded" value="true"/>
		<param name="ac_fireUploaderSelectionChanged" value="true"/>
		<param name="ac_fireUploadViewFileOpenDialogFilesSelected" value="true"/>
		<param name="ac_fireMainViewMessageShown" value="true"/>
</applet>
                  </p>
<!-- callback methods -->
<script language="javascript">
	/**
	 * applet initialized notification
	 */
	function appletInitialized( applet ) {
		traceEvent( "appletInitialized, " + applet.getAppletInfo() );
	}
	/**
	 * files reset notification
	 */
	function uploaderFilesReset( uploader ) {
		traceEvent( "uploaderFilesReset, fileCount=" + uploader.getFileCount() );
	}
	/**
	 * file added notification
	 */
	function uploaderFileAdded( uploader, file ) {
		traceEvent( "uploaderFileAdded, index=" + file.getIndex() );
	}
	/**
	 * file removed notification
	 */
	function uploaderFileRemoved( uploader, file ) {
		traceEvent( "uploaderFileRemoved, path=" + file.getPath() );
	}
	/**
	 * file moved notification
	 */
	function uploaderFileMoved( uploader, file, oldIndex ) {
		traceEvent( "uploaderFileMoved, path=" + file.getPath() + ", oldIndex=" + oldIndex );
	}
	/**
	 * file status changed notification
	 */
	function uploaderFileStatusChanged( uploader, file ) {
		traceEvent( "uploaderFileStatusChanged, index=" + file.getIndex() + ", status=" + file.getStatus() + ", content=" + file.getResponseContent() );
	}
	/**
* file partition uploaded notification
*/
function uploaderFilePartitionUploaded( uploader, file ) {
traceEvent( "uploaderFilePartitionUploaded, index=" + file.getIndex() + ", partition=" + file.getUploadedPartitionCount() + ", response=" + file.getResponseContent() );
} /** * uploader status changed notification */ function uploaderStatusChanged( uploader ) { traceEvent( "uploaderStatusChanged, status=" + uploader.getStatus() ); } /** * uploader selection changed notification */ function uploaderSelectionChanged( uploader ) { traceEvent( "uploaderSelectionChanged" ); } /** * upload view open dialog files selected notification */ function uploadViewOpenDialogFilesSelected(uploadView, paths ) { traceEvent( "uploadViewOpenDialogFilesSelected, paths=" + paths.length ); for(i = 0; i < paths.length; i++) { traceEvent("" + i + ". " + paths[i]); } } /** * main view message shown notification */ function mainViewMessageShown(mainView, severity, message) { traceEvent( "mainViewMessageShown, severity=" + severity + ", message=" + message ); } </script> <!-- debug auxiliary methods --> <script language="javascript"> /** * trace event to events textarea */ function traceEvent( message ) { document.debugForm.txtEvents.value += message + "\r\n"; } /** * dump status of uploader into html */ function dumpUploaderStatus() { var uploader = document.jumpLoaderApplet.getUploader(); // // dump uploader var uploaderDump = "<strong>Uploader</strong><br>" + "Status: " + uploader.getStatus() + "<br>" + "Files total: " + uploader.getFileCount() + "<br>" + "Ready files: " + uploader.getFileCountByStatus( 0 ) + "<br>" + "Uploading files: " + uploader.getFileCountByStatus( 1 ) + "<br>" + "Finished files: " + uploader.getFileCountByStatus( 2 ) + "<br>" + "Failed files: " + uploader.getFileCountByStatus( 3 ) + "<br>" + "Total files length: " + uploader.getFilesLength() + " bytes<br>" + ""; // // dump files var filesDump = "<strong>Files</strong><br>"; for( i = 0; i < uploader.getFileCount(); i++ ) { var file = uploader.getFile( i ); filesDump += "" + ( i + 1 ) + ". path=" + file.getPath + ", length=" + file.getLength() + ", status=" + file.getStatus() + "<br>"; } // // set text document.getElementById( "uploaderStatus" ).innerHTML = uploaderDump + "<br>" + filesDump; } </script> <form name="debugForm"> <p>Events:<br> <textarea name="txtEvents" style="width:100%; font:10px monospace" rows="10" wrap="off" id="txtEvents"></textarea> </p> <p><input type="button" value="Dump uploader status" onClick="dumpUploaderStatus()"> &nbsp;&nbsp; <input type="button" value="About..." onClick="alert( document.jumpLoaderApplet.getAppletInfo() )"> <p id="uploaderStatus"></p> </p> </form>