downloading a docx file from ajaxResponse
up vote
3
down vote
favorite
So I tried to download a docx document as a report . by converting ajax response to a blob then an url ! the result is a document word that display a message , " we're sorry . we can't open because we found a problem with it's content .
there the main :
onDownloadReport: function (oEvent) {
var oAjaxBody = {
SessionId: this.getModel("sessionModel").getData().SessionId,
CustomerName: encodeURIComponent(this.getModel("sessionModel").getData().CustomerName.split("n")[0]),
TenantInfo: encodeURIComponent(this.getModel("sessionModel").getData().TenantInfo)
};
var sServiceUrl = "/SDC_XS_TEMP/APPL/SDC/services/serviceRuntime/xsjs/SDC_REPORT_GENERATE_MM.xsjs";
var me = this;
$.ajax({
url: sServiceUrl,
type: "POST",
responseType:'arraybuffer',
contentType: "application/json",
data: JSON.stringify(oAjaxBody),
// dataType: "json",
success: function (oAjaxResponse) {
var content = oAjaxResponse;
var fileName = 'rapport.docx'; // You can use the .txt extension if you want
me.downloadwithpost(fileName, content);
},
error: function (oError) {
console.log("failure");
}
});
and this is the function
downloadwithpost: function (filename, content) {
var link = document.createElement('a');
var bytes = new Array(content.length);
// var bytes = new Array(content.length);
for (var i = 0; i < content.length; i++) {
bytes[i] = content.charCodeAt(i);
}
var byteArray = new Uint8Array(bytes);
var blob = new Blob([byteArray], {
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
});
var url = URL.createObjectURL(blob);
var oItem = {
documentId: url,
fileName: "rapport.docx",
thumbnailUrl: "",
url: url,
selected: true
};
var oUploadCollection = this.getView().byId("uploadCollection");
var newItem = new sap.m.UploadCollectionItem(oItem);
oUploadCollection.addItem(newItem);
oUploadCollection.downloadItem(newItem, true);
}
javascript ajax sapui5
New contributor
add a comment |
up vote
3
down vote
favorite
So I tried to download a docx document as a report . by converting ajax response to a blob then an url ! the result is a document word that display a message , " we're sorry . we can't open because we found a problem with it's content .
there the main :
onDownloadReport: function (oEvent) {
var oAjaxBody = {
SessionId: this.getModel("sessionModel").getData().SessionId,
CustomerName: encodeURIComponent(this.getModel("sessionModel").getData().CustomerName.split("n")[0]),
TenantInfo: encodeURIComponent(this.getModel("sessionModel").getData().TenantInfo)
};
var sServiceUrl = "/SDC_XS_TEMP/APPL/SDC/services/serviceRuntime/xsjs/SDC_REPORT_GENERATE_MM.xsjs";
var me = this;
$.ajax({
url: sServiceUrl,
type: "POST",
responseType:'arraybuffer',
contentType: "application/json",
data: JSON.stringify(oAjaxBody),
// dataType: "json",
success: function (oAjaxResponse) {
var content = oAjaxResponse;
var fileName = 'rapport.docx'; // You can use the .txt extension if you want
me.downloadwithpost(fileName, content);
},
error: function (oError) {
console.log("failure");
}
});
and this is the function
downloadwithpost: function (filename, content) {
var link = document.createElement('a');
var bytes = new Array(content.length);
// var bytes = new Array(content.length);
for (var i = 0; i < content.length; i++) {
bytes[i] = content.charCodeAt(i);
}
var byteArray = new Uint8Array(bytes);
var blob = new Blob([byteArray], {
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
});
var url = URL.createObjectURL(blob);
var oItem = {
documentId: url,
fileName: "rapport.docx",
thumbnailUrl: "",
url: url,
selected: true
};
var oUploadCollection = this.getView().byId("uploadCollection");
var newItem = new sap.m.UploadCollectionItem(oItem);
oUploadCollection.addItem(newItem);
oUploadCollection.downloadItem(newItem, true);
}
javascript ajax sapui5
New contributor
add a comment |
up vote
3
down vote
favorite
up vote
3
down vote
favorite
So I tried to download a docx document as a report . by converting ajax response to a blob then an url ! the result is a document word that display a message , " we're sorry . we can't open because we found a problem with it's content .
there the main :
onDownloadReport: function (oEvent) {
var oAjaxBody = {
SessionId: this.getModel("sessionModel").getData().SessionId,
CustomerName: encodeURIComponent(this.getModel("sessionModel").getData().CustomerName.split("n")[0]),
TenantInfo: encodeURIComponent(this.getModel("sessionModel").getData().TenantInfo)
};
var sServiceUrl = "/SDC_XS_TEMP/APPL/SDC/services/serviceRuntime/xsjs/SDC_REPORT_GENERATE_MM.xsjs";
var me = this;
$.ajax({
url: sServiceUrl,
type: "POST",
responseType:'arraybuffer',
contentType: "application/json",
data: JSON.stringify(oAjaxBody),
// dataType: "json",
success: function (oAjaxResponse) {
var content = oAjaxResponse;
var fileName = 'rapport.docx'; // You can use the .txt extension if you want
me.downloadwithpost(fileName, content);
},
error: function (oError) {
console.log("failure");
}
});
and this is the function
downloadwithpost: function (filename, content) {
var link = document.createElement('a');
var bytes = new Array(content.length);
// var bytes = new Array(content.length);
for (var i = 0; i < content.length; i++) {
bytes[i] = content.charCodeAt(i);
}
var byteArray = new Uint8Array(bytes);
var blob = new Blob([byteArray], {
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
});
var url = URL.createObjectURL(blob);
var oItem = {
documentId: url,
fileName: "rapport.docx",
thumbnailUrl: "",
url: url,
selected: true
};
var oUploadCollection = this.getView().byId("uploadCollection");
var newItem = new sap.m.UploadCollectionItem(oItem);
oUploadCollection.addItem(newItem);
oUploadCollection.downloadItem(newItem, true);
}
javascript ajax sapui5
New contributor
So I tried to download a docx document as a report . by converting ajax response to a blob then an url ! the result is a document word that display a message , " we're sorry . we can't open because we found a problem with it's content .
there the main :
onDownloadReport: function (oEvent) {
var oAjaxBody = {
SessionId: this.getModel("sessionModel").getData().SessionId,
CustomerName: encodeURIComponent(this.getModel("sessionModel").getData().CustomerName.split("n")[0]),
TenantInfo: encodeURIComponent(this.getModel("sessionModel").getData().TenantInfo)
};
var sServiceUrl = "/SDC_XS_TEMP/APPL/SDC/services/serviceRuntime/xsjs/SDC_REPORT_GENERATE_MM.xsjs";
var me = this;
$.ajax({
url: sServiceUrl,
type: "POST",
responseType:'arraybuffer',
contentType: "application/json",
data: JSON.stringify(oAjaxBody),
// dataType: "json",
success: function (oAjaxResponse) {
var content = oAjaxResponse;
var fileName = 'rapport.docx'; // You can use the .txt extension if you want
me.downloadwithpost(fileName, content);
},
error: function (oError) {
console.log("failure");
}
});
and this is the function
downloadwithpost: function (filename, content) {
var link = document.createElement('a');
var bytes = new Array(content.length);
// var bytes = new Array(content.length);
for (var i = 0; i < content.length; i++) {
bytes[i] = content.charCodeAt(i);
}
var byteArray = new Uint8Array(bytes);
var blob = new Blob([byteArray], {
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
});
var url = URL.createObjectURL(blob);
var oItem = {
documentId: url,
fileName: "rapport.docx",
thumbnailUrl: "",
url: url,
selected: true
};
var oUploadCollection = this.getView().byId("uploadCollection");
var newItem = new sap.m.UploadCollectionItem(oItem);
oUploadCollection.addItem(newItem);
oUploadCollection.downloadItem(newItem, true);
}
javascript ajax sapui5
javascript ajax sapui5
New contributor
New contributor
edited 22 hours ago
Eugene Mihaylin
808224
808224
New contributor
asked 23 hours ago
Alexis sanchez
161
161
New contributor
New contributor
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
0
down vote
Take a look at this example, I worked with an hexadecimal data format, but you can change it as you see fit. Let me know if you need any help with this example or have any questions.
doAfterSuccess: function(result, fileName, fileType) {
var filedata = result.ARRAY[0].FILEDATA; // get data from response
// ------------------------------- hex data, rapport, docx
var createdFile = this.createFile(filedata, fileName, fileType);
this.downloadFile(createdFile, fileName, fileType);
},
createFile: function(hexContent, filename, type) {
var data = this.convertHexToBinary(hexContent); // skip if your data is not hex
var file = new Blob([data], {
name: filename,
type: type
});
return file;
},
convertHexToBinary: function(hexContent) {
return new Uint8Array(hexContent.match(/.{2}/g).map(function(e)
{
return parseInt(e, 16);
}));
},
downloadFile: function(file, filename, type){
if (window.navigator.msSaveOrOpenBlob)
window.navigator.msSaveOrOpenBlob(file, filename);
else { // Others
var a = document.createElement("a"),
url = URL.createObjectURL(file);
a.href = url;
a.download = filename + "." + type;
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
}
},
add a comment |
up vote
0
down vote
function downloadDoc(filename, sServiceUrl, oAjaxBody){
var xhr = new XMLHttpRequest();
xhr.open('POST', sServiceUrl, true);
xhr.responseType = 'blob';
xhr.send(JSON.stringify(oAjaxBody));
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
//$.unblockUI();
if(xhr.status == 200) {
var blob = new Blob([xhr.response], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
if (navigator.msSaveOrOpenBlob)
navigator.msSaveOrOpenBlob(blob, filename);
else {
var link = document.createElement('a');
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(blob);
link.href = downloadUrl;
link.style = "display: none";
link.download = filename;
document.body.appendChild(link);
link.click();
setTimeout(function(){
document.body.removeChild(link);
window.URL.revokeObjectURL(downloadUrl);
}, 100);
}
}
else {
console.log("failure");
}
}
}
}
so as params , we don't have an url , just an oAjaxResponse .
– Alexis sanchez
23 hours ago
the major problem is to convert an oajax reponse to blob
– Alexis sanchez
22 hours ago
Why use XMLHttpRequest? Please refer to stackoverflow.com/questions/17657184/…
– Miller Cy Chan
1 hour ago
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
Take a look at this example, I worked with an hexadecimal data format, but you can change it as you see fit. Let me know if you need any help with this example or have any questions.
doAfterSuccess: function(result, fileName, fileType) {
var filedata = result.ARRAY[0].FILEDATA; // get data from response
// ------------------------------- hex data, rapport, docx
var createdFile = this.createFile(filedata, fileName, fileType);
this.downloadFile(createdFile, fileName, fileType);
},
createFile: function(hexContent, filename, type) {
var data = this.convertHexToBinary(hexContent); // skip if your data is not hex
var file = new Blob([data], {
name: filename,
type: type
});
return file;
},
convertHexToBinary: function(hexContent) {
return new Uint8Array(hexContent.match(/.{2}/g).map(function(e)
{
return parseInt(e, 16);
}));
},
downloadFile: function(file, filename, type){
if (window.navigator.msSaveOrOpenBlob)
window.navigator.msSaveOrOpenBlob(file, filename);
else { // Others
var a = document.createElement("a"),
url = URL.createObjectURL(file);
a.href = url;
a.download = filename + "." + type;
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
}
},
add a comment |
up vote
0
down vote
Take a look at this example, I worked with an hexadecimal data format, but you can change it as you see fit. Let me know if you need any help with this example or have any questions.
doAfterSuccess: function(result, fileName, fileType) {
var filedata = result.ARRAY[0].FILEDATA; // get data from response
// ------------------------------- hex data, rapport, docx
var createdFile = this.createFile(filedata, fileName, fileType);
this.downloadFile(createdFile, fileName, fileType);
},
createFile: function(hexContent, filename, type) {
var data = this.convertHexToBinary(hexContent); // skip if your data is not hex
var file = new Blob([data], {
name: filename,
type: type
});
return file;
},
convertHexToBinary: function(hexContent) {
return new Uint8Array(hexContent.match(/.{2}/g).map(function(e)
{
return parseInt(e, 16);
}));
},
downloadFile: function(file, filename, type){
if (window.navigator.msSaveOrOpenBlob)
window.navigator.msSaveOrOpenBlob(file, filename);
else { // Others
var a = document.createElement("a"),
url = URL.createObjectURL(file);
a.href = url;
a.download = filename + "." + type;
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
}
},
add a comment |
up vote
0
down vote
up vote
0
down vote
Take a look at this example, I worked with an hexadecimal data format, but you can change it as you see fit. Let me know if you need any help with this example or have any questions.
doAfterSuccess: function(result, fileName, fileType) {
var filedata = result.ARRAY[0].FILEDATA; // get data from response
// ------------------------------- hex data, rapport, docx
var createdFile = this.createFile(filedata, fileName, fileType);
this.downloadFile(createdFile, fileName, fileType);
},
createFile: function(hexContent, filename, type) {
var data = this.convertHexToBinary(hexContent); // skip if your data is not hex
var file = new Blob([data], {
name: filename,
type: type
});
return file;
},
convertHexToBinary: function(hexContent) {
return new Uint8Array(hexContent.match(/.{2}/g).map(function(e)
{
return parseInt(e, 16);
}));
},
downloadFile: function(file, filename, type){
if (window.navigator.msSaveOrOpenBlob)
window.navigator.msSaveOrOpenBlob(file, filename);
else { // Others
var a = document.createElement("a"),
url = URL.createObjectURL(file);
a.href = url;
a.download = filename + "." + type;
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
}
},
Take a look at this example, I worked with an hexadecimal data format, but you can change it as you see fit. Let me know if you need any help with this example or have any questions.
doAfterSuccess: function(result, fileName, fileType) {
var filedata = result.ARRAY[0].FILEDATA; // get data from response
// ------------------------------- hex data, rapport, docx
var createdFile = this.createFile(filedata, fileName, fileType);
this.downloadFile(createdFile, fileName, fileType);
},
createFile: function(hexContent, filename, type) {
var data = this.convertHexToBinary(hexContent); // skip if your data is not hex
var file = new Blob([data], {
name: filename,
type: type
});
return file;
},
convertHexToBinary: function(hexContent) {
return new Uint8Array(hexContent.match(/.{2}/g).map(function(e)
{
return parseInt(e, 16);
}));
},
downloadFile: function(file, filename, type){
if (window.navigator.msSaveOrOpenBlob)
window.navigator.msSaveOrOpenBlob(file, filename);
else { // Others
var a = document.createElement("a"),
url = URL.createObjectURL(file);
a.href = url;
a.download = filename + "." + type;
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
}
},
answered 2 hours ago
Matthijs Mennens
1,035216
1,035216
add a comment |
add a comment |
up vote
0
down vote
function downloadDoc(filename, sServiceUrl, oAjaxBody){
var xhr = new XMLHttpRequest();
xhr.open('POST', sServiceUrl, true);
xhr.responseType = 'blob';
xhr.send(JSON.stringify(oAjaxBody));
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
//$.unblockUI();
if(xhr.status == 200) {
var blob = new Blob([xhr.response], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
if (navigator.msSaveOrOpenBlob)
navigator.msSaveOrOpenBlob(blob, filename);
else {
var link = document.createElement('a');
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(blob);
link.href = downloadUrl;
link.style = "display: none";
link.download = filename;
document.body.appendChild(link);
link.click();
setTimeout(function(){
document.body.removeChild(link);
window.URL.revokeObjectURL(downloadUrl);
}, 100);
}
}
else {
console.log("failure");
}
}
}
}
so as params , we don't have an url , just an oAjaxResponse .
– Alexis sanchez
23 hours ago
the major problem is to convert an oajax reponse to blob
– Alexis sanchez
22 hours ago
Why use XMLHttpRequest? Please refer to stackoverflow.com/questions/17657184/…
– Miller Cy Chan
1 hour ago
add a comment |
up vote
0
down vote
function downloadDoc(filename, sServiceUrl, oAjaxBody){
var xhr = new XMLHttpRequest();
xhr.open('POST', sServiceUrl, true);
xhr.responseType = 'blob';
xhr.send(JSON.stringify(oAjaxBody));
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
//$.unblockUI();
if(xhr.status == 200) {
var blob = new Blob([xhr.response], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
if (navigator.msSaveOrOpenBlob)
navigator.msSaveOrOpenBlob(blob, filename);
else {
var link = document.createElement('a');
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(blob);
link.href = downloadUrl;
link.style = "display: none";
link.download = filename;
document.body.appendChild(link);
link.click();
setTimeout(function(){
document.body.removeChild(link);
window.URL.revokeObjectURL(downloadUrl);
}, 100);
}
}
else {
console.log("failure");
}
}
}
}
so as params , we don't have an url , just an oAjaxResponse .
– Alexis sanchez
23 hours ago
the major problem is to convert an oajax reponse to blob
– Alexis sanchez
22 hours ago
Why use XMLHttpRequest? Please refer to stackoverflow.com/questions/17657184/…
– Miller Cy Chan
1 hour ago
add a comment |
up vote
0
down vote
up vote
0
down vote
function downloadDoc(filename, sServiceUrl, oAjaxBody){
var xhr = new XMLHttpRequest();
xhr.open('POST', sServiceUrl, true);
xhr.responseType = 'blob';
xhr.send(JSON.stringify(oAjaxBody));
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
//$.unblockUI();
if(xhr.status == 200) {
var blob = new Blob([xhr.response], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
if (navigator.msSaveOrOpenBlob)
navigator.msSaveOrOpenBlob(blob, filename);
else {
var link = document.createElement('a');
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(blob);
link.href = downloadUrl;
link.style = "display: none";
link.download = filename;
document.body.appendChild(link);
link.click();
setTimeout(function(){
document.body.removeChild(link);
window.URL.revokeObjectURL(downloadUrl);
}, 100);
}
}
else {
console.log("failure");
}
}
}
}
function downloadDoc(filename, sServiceUrl, oAjaxBody){
var xhr = new XMLHttpRequest();
xhr.open('POST', sServiceUrl, true);
xhr.responseType = 'blob';
xhr.send(JSON.stringify(oAjaxBody));
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
//$.unblockUI();
if(xhr.status == 200) {
var blob = new Blob([xhr.response], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
if (navigator.msSaveOrOpenBlob)
navigator.msSaveOrOpenBlob(blob, filename);
else {
var link = document.createElement('a');
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(blob);
link.href = downloadUrl;
link.style = "display: none";
link.download = filename;
document.body.appendChild(link);
link.click();
setTimeout(function(){
document.body.removeChild(link);
window.URL.revokeObjectURL(downloadUrl);
}, 100);
}
}
else {
console.log("failure");
}
}
}
}
edited 1 hour ago
answered 23 hours ago
Miller Cy Chan
1569
1569
so as params , we don't have an url , just an oAjaxResponse .
– Alexis sanchez
23 hours ago
the major problem is to convert an oajax reponse to blob
– Alexis sanchez
22 hours ago
Why use XMLHttpRequest? Please refer to stackoverflow.com/questions/17657184/…
– Miller Cy Chan
1 hour ago
add a comment |
so as params , we don't have an url , just an oAjaxResponse .
– Alexis sanchez
23 hours ago
the major problem is to convert an oajax reponse to blob
– Alexis sanchez
22 hours ago
Why use XMLHttpRequest? Please refer to stackoverflow.com/questions/17657184/…
– Miller Cy Chan
1 hour ago
so as params , we don't have an url , just an oAjaxResponse .
– Alexis sanchez
23 hours ago
so as params , we don't have an url , just an oAjaxResponse .
– Alexis sanchez
23 hours ago
the major problem is to convert an oajax reponse to blob
– Alexis sanchez
22 hours ago
the major problem is to convert an oajax reponse to blob
– Alexis sanchez
22 hours ago
Why use XMLHttpRequest? Please refer to stackoverflow.com/questions/17657184/…
– Miller Cy Chan
1 hour ago
Why use XMLHttpRequest? Please refer to stackoverflow.com/questions/17657184/…
– Miller Cy Chan
1 hour ago
add a comment |
Alexis sanchez is a new contributor. Be nice, and check out our Code of Conduct.
Alexis sanchez is a new contributor. Be nice, and check out our Code of Conduct.
Alexis sanchez is a new contributor. Be nice, and check out our Code of Conduct.
Alexis sanchez is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53372174%2fdownloading-a-docx-file-from-ajaxresponse%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown