123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.form.uploader.Base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojox.form.uploader.Base"] = true;
- dojo.provide("dojox.form.uploader.Base");
- dojo.require("dijit._Widget");
- dojo.require("dijit._Templated");
- dojo.declare("dojox.form.uploader.Base", [dijit._Widget, dijit._Templated], {
- //
- // Version: 1.6
- //
- // summary:
- // The Base class used for dojox.form.Uploader and dojox.form.uploader.FileList.
- //
- // description:
- // Should not be used as a standalone. To be mixed in with other classes.
- //
- getForm: function(){
- // summary:
- // Finds the parent form of the Uploader, if it exists.
- //
- if(!this.form){
- var n = this.domNode;
- while(n && n.tagName && n !== document.body){
- if(n.tagName.toLowerCase() == "form"){
- this.form = n;
- break;
- }
- n = n.parentNode;
- }
- }
- return this.form // Node;
- },
- getUrl: function(){
- // summary:
- // Finds the URL to upload to, whether it be the action in the parent form, this.url or
- // this.uploadUrl
- //
- if(this.uploadUrl) this.url = this.uploadUrl;
- if(this.url) return this.url;
- if(this.getForm()) this.url = this.form.action;
- return this.url; // String
- },
- connectForm: function(){
- //console.log("connectForm...", this.url, !!this.uploadUrl, !!this.getForm())
- this.url = this.getUrl();
- if(!this._fcon && !!this.getForm()){
- this._fcon = true;
- this.connect(this.form, "onsubmit", function(evt){
- dojo.stopEvent(evt);
- this.submit(dojo.formToObject(this.form));
- });
- //console.log("----------------form connected:", this.url)
- }
- //console.log("form:", this.form, this.url);
- },
- supports: function(what){
- // summary:
- // Does feature testing for uploader capabilities. (No browser sniffing - yay)
- //
- if(!this._hascache){
- this._hascache = {
- testDiv: dojo.create("div"),
- testInput: dojo.create("input", {type:"file"}),
- xhr:!!window.XMLHttpRequest ? new XMLHttpRequest() : {}
- };
- dojo.style(this._hascache.testDiv, "opacity", .7);
- }
- switch(what){
- case "FormData":
- return !!window.FormData;
- case "sendAsBinary":
- return !!this._hascache.xhr.sendAsBinary;
- case "opacity":
- return dojo.style(this._hascache.testDiv, "opacity") == .7;
- case "multiple":
- if(this.force == "flash" || this.force == "iframe") return false;
- var res = dojo.attr(this._hascache.testInput, "multiple");
- return res===true || res===false; // IE will be undefined
- }
- return false; // Boolean
- },
- getMimeType: function(){
- // summary:
- // Returns the mime type that should be used in an HTML5 upload form. Return result
- // may change as the current use is very generic.
- //
- return "application/octet-stream"; //image/gif
- },
- getFileType: function(/* String */name){
- // summary:
- // Gets the extension of a file
- return name.substring(name.lastIndexOf(".")+1).toUpperCase(); // String
- },
- convertBytes: function(bytes){
- // summary:
- // Converts bytes. Returns an object with all conversions. The "value" property is
- // considered the most likely desired result.
- //
- var kb = Math.round(bytes/1024*100000)/100000;
- var mb = Math.round(bytes/1048576*100000)/100000;
- var gb = Math.round(bytes/1073741824*100000)/100000;
- var value = bytes;
- if(kb>1) value = kb.toFixed(1)+" kb";
- if(mb>1) value = mb.toFixed(1)+" mb";
- if(gb>1) value = gb.toFixed(1)+" gb";
- return {
- kb:kb,
- mb:mb,
- gb:gb,
- bytes:bytes,
- value: value
- }; // Object
- }
- });
- }
|