New file |
0,0 → 1,81 |
if(!dojo._hasResource["dojox.io.xhrMultiPart"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. |
dojo._hasResource["dojox.io.xhrMultiPart"] = true; |
dojo.provide("dojox.io.xhrMultiPart"); |
|
dojo.require("dojo._base.xhr"); |
dojo.require("dojox.uuid.generateRandomUuid"); |
|
(function(){ |
function _createPart(args, boundary){ |
if(!args["name"] && !args["content"]){ |
throw new Error("Each part of a multi-part request requires 'name' and 'content'."); |
} |
|
var tmp = []; |
tmp.push("--" + boundary, |
"Content-Disposition: form-data; name=\"" + args.name + "\"" + |
(args["filename"] ? "; filename=\"" + args.filename + "\"" : "")); |
|
if(args["contentType"]){ |
var ct = "Content-Type: " + args.contentType; |
if(args["charset"]){ |
ct += "; Charset=" + args.charset; |
} |
tmp.push(ct); |
} |
|
if(args["contentTransferEncoding"]){ |
tmp.push("Content-Transfer-Encoding: " + args.contentTransferEncoding); |
} |
|
tmp.push("", args.content); |
|
return tmp; |
} |
|
function _needIframe(node){ |
return (!!(dojo.query("input[type=file]", node).length)); |
} |
|
function _partsFromNode(node, boundary){ |
// TODO: write this function! |
var tmp = []; |
return tmp; |
} |
|
dojox.io.xhrMultiPart = function(args){ |
if(!args["file"] && !args["formNode"]){ |
throw new Error("file or formNode must be provided to dojox.io.xhrMultiPart's arguments"); |
} |
|
// unique guid as a boundary value for multipart posts |
var boundary = dojox.uuid.generateRandomUuid(); |
|
var tmp = []; |
var out = ""; |
|
if(args["file"]){ |
var d = (dojo.isArray(args.file) ? args.file : [args.file]); |
|
for(var i=0; i < d.length; i++){ |
tmp = tmp.concat(_createPart(d[i], boundary)); |
} |
} |
|
if(args["formNode"]){ |
tmp = tmp.concat(_partsFromNode(args["formNode"], boundary)); |
} |
|
if(tmp.length){ |
tmp.push("--"+boundary+"--", ""); |
out = tmp.join("\r\n"); |
} |
|
return dojo.rawXhrPost(dojo.mixin(args, { |
contentType: "multipart/form-data; boundary=" + boundary, |
postData: out |
})); |
} |
})(); |
|
} |