Pman.Download = function(cfg)
{
+
+
this.params = {};
Roo.apply(this, cfg);
- this.submit = false;
- this.createCsvFrame();
+ //this.submit = false;
+ //this.createCsvFrame();
- var requested = 0;
+ //var requested = 0;
- Roo.EventManager.on( this.csvFrame, 'load', this.onLoad, this);
+ //Roo.EventManager.on( this.csvFrame, 'load', this.onLoad, this);
//--- simple method..
if (this.method == 'GET' && !this.params) {
(function() {
+
+
+ this.createCsvFrame();
+ //Roo.EventManager.on( this.csvFrame, 'load', this.onLoad, this);
this.submit = true;
this.csvFrame.src = cfg.url;
//this.cleanup.defer(cfg.timeout || 30000,this);
Roo.log("creating form?");
+ this.form = new FormData();
+ /*
var b = Roo.get(document.body);
this.form = b.createChild({
tag: 'form',
- name: 'testForm',
method : this.method,
action : this.url,
target : this.newWindow ? '_new' : this.csvFrame.id,
enctype : 'multipart/form-data'
});
+ **/
//
// if(this.doctype == 'pdf'){
// this.pdfEmbed = b.createChild({
// });
// }
- Roo.log(this.params);
+ //Roo.log(this.params);
+ this.params._get = 1; // always do a post request, with _get passed
for(var i in this.params) {
-
+ this.form.append(i, this.params[i]);
+ /*
var el = this.form.createChild( {
ns : 'html',
tag : 'input',
name : i,
value : this.params[i]
});
+ */
}
- Roo.log(document);
+ var req = new XMLHttpRequest();
+ req.responseType = 'blob';
+
+ req.open('POST', this.url);
+
+ var _t = this;
+ req.onload = function( ev )
+ {
+ if (req.status == 200) {
+ Roo.log(ev);
+ var cd = req.getResponseHeader('Content-Disposition');
+
+ var filename = '';
+ var matches = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/.exec(cd);
+ if (matches != null && matches[1]) {
+ filename = matches[1].replace(/['"]/g, '');
+ }
+
+ var blob = new Blob([req.response], {type: req.responseType });
+
+ var a = document.createElement("a");
+ a.style = "display: none";
+ document.body.appendChild(a);
+ var url = window.URL.createObjectURL(blob);
+ a.href = url;
+ a.download = filename;
+ a.click();
+ //release the reference to the file by revoking the Object URL
+ window.URL.revokeObjectURL(url);
+
+ _t.success ? _t.success(ev) : '';
+ } else {
+ _t.failure ? _t.failure(ev) : '';
+ }
+
+ }
+
+ req.send(this.form);
+ /*
(function() {
this.submit = true;
this.form.dom.submit();
this.cleanup.defer(this.timeout || 30000,this);
}).defer(100, this);
-
+ */
}
method : 'GET',
+ success : false,
+ failure : false,
+
// private..
+ //used by simple GET method.
createCsvFrame: function()
{
if (this.csvFrame) {
}
},
-
+ /* not used as it didn't work..
onLoad : function()
{
// requested++; // second request is real one..
if (!this.submit) {
return false;
}
- return false;
+ //return false;
var frame = this.csvFrame;
var success = true;
Roo.MessageBox.alert("Download Error", doc.body.innerHTML);
success = false;
-
-
+ if (this.failure) {
+ this.failure();
+ }
+ return true;
}
Roo.log(doc.body.innerHTML);
Roo.log(e.toString());
Roo.log(e);
}
+ if (this.success) {
+ this.success();
+ }
// we can not actually do anything with the frame... as it may actually still be downloading..
return true;
},
-
+ */
// private - clean up download elements.
cleanup :function()
{
- Roo.log('cleanup?');
+ /* Roo.log('cleanup?');
if (this.form) {
this.form.remove();
this.form= false;
Roo.get(this.csvFrame).remove();
this.csvFrame= false;
}
+ */
},
// do it as a post, as args can get long..
- this.method = this.method || 'POST';
+ this.method = 'POST';
if (this.method == 'POST') {
this.params._get = 1;
}