12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- 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
- }));
- }
- })();
- }
|