Skip to Content
0
Sep 22, 2017 at 10:05 AM

SAPUI5 file download upload corrupted

997 Views

Can someone help me. I've implemented a file upload / download in UI5 that seems to work but when I download the file it gets corrupted and I can't open it. For now I'm only testing with image files:

                new sap.ui.unified.FileUploader({
                    buttonOnly: true,
                    buttonText: "Upload files",
                    icon: "sap-icon://upload",
                    change: function(oEvent) {
                        var oFileUploader = oEvent.getSource();
                        oItem = oFileUploader.getParent().getParent().getParent();
                        var sPath = oItem.getBindingContext().getPath();
                        var files = oEvent.getParameter("files");
                        var file = files[0];
                        if (file) {
                            var oNewFile = {
                                ID: that.count++,
                                SurveyAnswerID: oSA.ID,
                                FileName: oEvent.getParameter("newValue"),
                                FileBinary: null,
                                MimeType: "image/jpeg",
                                Mode: "POST"
                            };
                            var reader = new FileReader();
                            reader.onload = function(evt) {
                                var binaryString = evt.target.result;
                                oNewFile.FileBinary = binaryString;
                            };
                            reader.readAsBinaryString(file);
                        } else {
                            oNewFile.FileBinary = "";
                            oNewFile.FileName = "";
                            MessageToast.show("Something went wrong with the file upload.\n Please try again");
                        }
                        that._pushItemToFileUploadModel(oNewFile.ID, oNewFile);
                        that._getFileUploadModel().refresh();
                    }
                })

Download code:

        selectionChange: function(oEvent) {
            var item = oEvent.getSource().getSelectedItem();
            var model = that._getFileUploadModel();
            if (item) {
                var a = window.document.createElement('a');
                a.href = window.URL.createObjectURL(new Blob([item.getDocumentId()], {
                    type: item.getMimeType()
                }));
                a.download = item.getFileName();
                // Append anchor to body.
                document.body.appendChild(a);
                a.click();
                // Remove anchor from body
                document.body.removeChild(a);
            }

            try {
                oEvent.getSource()._oList.removeSelections();
            } catch (e) {
                //DO nothing
            }

        },