JumpLoader
Java File Upload Applet

Demo

Attribute management with JavaScript

Uploader attributes Selected file attributes
Name:
Value:
Send to server:

Name:
Value:
Send to server:

Events:

Code:
<applet 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_fireUploaderSelectionChanged" value="true"/>
  <param name="ac_fireUploaderFileStatusChanged" value="true"/>
</applet>

<!-- callback methods -->
<script language="javascript">
    /**
     * uploader selection changed notification
     */
    function uploaderSelectionChanged( uploader ) {
        dumpFileAttributes();
    }
    /**
     * file status changed notification
     */
    function uploaderFileStatusChanged( uploader, file ) {
        traceEvent( "uploaderFileStatusChanged, index=" + file.getIndex() + ", status=" + file.getStatus() + ", content=" + file.getResponseContent() );
    }
    /**
     * trace event to events textarea
     */
    function traceEvent( message ) {
        document.debugForm.txtEvents.value += message + "\r\n";
    }
</script>

<!-- debug auxiliary methods -->
<script language="javascript">
    /**
     * dump attributes of uploader into html
     */
    function dumpAttributes( attrSet, removeFunctionName ) {
        var n = attrSet.getAttributeCount();
        var content = "";
        if( n > 0 ) {
            content = "<table class='dataTableInner'>";
            content += "<tr>" +
                "<td class='dataColumnHeader'>#</td>" +
                "<td class='dataColumnHeader'>Name</td>" +
                "<td class='dataColumnHeader'>Value</td>" +
                "<td class='dataColumnHeader'>Send</td>" +
                "<td class='dataColumnHeader'>Action</td>" +
                "</tr>";
            for( i = 0; i < n; i++ ) {
                var attr = attrSet.getAttributeAt( i );
                content += "<tr class='dataRow" + ( i % 2 == 0 ? "Even" : "Odd" ) + "'>";
                content += "<td class='dataRownum'>" + ( i + 1 ) + "</td>";
                content += "<td class='dataText'>" + attr.getName() + "</td>";
                content += "<td class='dataText'>" + attr.getStringValue() + "</td>";
                content += "<td class='dataText'>" + attr.isSendToServer() + "</td>";
                content += "<td class='dataText'><a href='javascript:" +
                    removeFunctionName + "(" + i + ")'>remove</a></td>";
                content += "</tr>";
            }
            content += "</table>";
        } else {
            content = "No attributes";
        }
        return content;
    }
    /**
     * dump attributes of uploader into html
     */
    function dumpUploaderAttributes() {
        var uploader = document.jumpLoaderApplet.getUploader();
        var attrSet = uploader.getAttributeSet();
        var content = dumpAttributes( attrSet, "removeUploaderAttribute" );
         document.getElementById( "uploaderAttributes" ).innerHTML = content;
     }
    /**
     * add attribute to uploader
     */
     function createUploaderAttribute() {
         var uploader = document.jumpLoaderApplet.getUploader();
         var attrSet = uploader.getAttributeSet();
         var name = document.debugForm.uploaderAttributeName.value;
         var value = document.debugForm.uploaderAttributeValue.value;
         var attr = attrSet.createStringAttribute( name, value );
         attr.setSendToServer( document.debugForm.uploaderAttributeSendToServer.checked );
         dumpUploaderAttributes();
     }
     /**
     *    remove uploader attribute at specified index
     */
     function removeUploaderAttribute( index ) {
         var uploader = document.jumpLoaderApplet.getUploader();
         var attrSet = uploader.getAttributeSet();
         var attr = attrSet.getAttributeAt( index );
         attrSet.removeAttribute( attr );
         dumpUploaderAttributes();
     }
    /**
     * return selected file if and only if single file selected
     */
    function getSelectedFile() {
        var file = null;
        var uploader = document.jumpLoaderApplet.getUploader();
        var selection = uploader.getSelection();
        var numSelected = selection.getSelectedItemCount();
        if( numSelected == 1 ) {
            var selectedIndex = selection.getSelectedItemIndexAt( 0 );
            file = uploader.getFile( selectedIndex );
        }
        return file;
    }
    /**
     * dump attributes of selected file into html
     */
     function dumpFileAttributes() {
         var content = "Single file should be selected";
         var file = getSelectedFile();
         if( file != null ) {
            var attrSet = file.getAttributeSet();
            content = dumpAttributes( attrSet, "removeFileAttribute" );
         }
         document.getElementById( "fileAttributes" ).innerHTML = content;
    }
    /**
     * add attribute to selected file
     */
     function createFileAttribute() {
        var file = getSelectedFile();
         if( file != null ) {
            var attrSet = file.getAttributeSet();
            var name = document.debugForm.fileAttributeName.value;
            var value = document.debugForm.fileAttributeValue.value;
            var attr = attrSet.createStringAttribute( name, value );
            attr.setSendToServer( document.debugForm.fileAttributeSendToServer.checked );
            dumpFileAttributes();
        } else {
            alert( "Single file should be selected" );
        }
     }
     /**
     *    remove selected file attribute at specified index
     */
     function removeFileAttribute( index ) {
        var file = getSelectedFile();
         if( file != null ) {
             var attrSet = file.getAttributeSet();
             var attr = attrSet.getAttributeAt( index );
            attrSet.removeAttribute( attr );
            dumpFileAttributes();
         } else {
            alert( "Single file should be selected" );
        }
     }
</script>
<form name="debugForm">
    <table class="dataTableOuter" width="100%">
        <tr>
            <td class="dataHeader">Uploader attributes</td>
            <td class="dataHeader">Selected file attributes</td>
        </tr>
        <tr>
            <!-- uploader attributes control -->
            <td valign="top">
                <table class="formTableOuter">
                    <tr><td>
                        <table class="formTableInner">
                        <tr>
                            <td class="formLabel">Name:</td>
                            <td class="formControl"><input type="text" name="uploaderAttributeName"></td>
                        </tr>
                        <tr>
                            <td class="formLabel">Value:</td>
                            <td class="formControl"><input type="text" name="uploaderAttributeValue"></td>
                        </tr>
                        <tr>
                            <td class="formLabel">Send to server:</td>
                            <td class="formControl"><input type="checkbox" name="uploaderAttributeSendToServer"></td>
                        </tr>
                        </table>
                    </td></tr>
                    <tr><td class="formFooter">
                        <input type="button" value="set" onClick="createUploaderAttribute()">
                    </td></tr>
                </table>
                <p id="uploaderAttributes"><p></p>
                <input type="button" value="refresh" onClick="dumpUploaderAttributes()">
            </td>
            <!-- file attributes control -->
            <td valign="top">
                <table class="formTableOuter">
                    <tr><td>
                        <table class="formTableInner">
                        <tr>
                            <td class="formLabel">Name:</td>
                            <td class="formControl"><input type="text" name="fileAttributeName"></td>
                        </tr>
                        <tr>
                            <td class="formLabel">Value:</td>
                            <td class="formControl"><input type="text" name="fileAttributeValue"></td>
                        </tr>
                        <tr>
                            <td class="formLabel">Send to server:</td>
                            <td class="formControl"><input type="checkbox" name="fileAttributeSendToServer"></td>
                        </tr>
                        </table>
                    </td></tr>
                    <tr><td class="formFooter">
                        <input type="button" value="set" onClick="createFileAttribute()">
                    </td></tr>
                </table>
                <p id="fileAttributes"><p></p>
                <input type="button" value="refresh" onClick="dumpFileAttributes()">
            </td>
        </tr>
    </table>
    <p>Events:<br>
    <textarea name="txtEvents" style="width:100%; font:10px monospace" rows="10" wrap="off" id="txtEvents"></textarea>
    <p></p>
</form>
  
advertising WebFM — easy and efficient web file manager.