Я пытаюсь реализовать загрузку файла в приложении UI5 на сервере HANA XS. Я не могу найти много информации, как это сделать - у кого-то появилась идея?SAP HANA XS Загрузка файла с UI5
ответ
вот простая реализация простой загрузки текстового файла:
стороне клиента JS:
doUpload: function() {
var uploadField = document.getElementById("ulUploader1-fu");
var file = uploadField.files[0];
var reader = new FileReader();
reader.onload = function (event) {
var source = event.target.result; // this is the binary values
var name = file.name;
$.ajax({
url: "/services/upload.xsjs?cmd=Import",
type: "PUT",
processData: false,
contentType: file.type,
data: source,
xhr: function() {
var req = $.ajaxSettings.xhr();
if (req) {
if (req.overrideMimeType) {
req.overrideMimeType('text/plain; charset=x-user-defined');
}
if (req.sendAsBinary) {
req.send = req.sendAsBinary;
}
}
return req;
},
error: function(xhr, textStatus, errorThrown){
alert(xhr.responseText);
},
success: function() {
reader.onload = null;
}
});
};
reader.readAsText(file);
}
А вот ServerSide xsjs служба:
function doImport() {
var data = '', conn = $.db.getConnection(), pstmt;
if($.request.body){
data = $.request.body.asString();
}
var conn = $.db.getConnection();
var pstmt = conn.prepareStatement('INSERT INTO "TEST"."UPLOAD" (ID, MIMETYPE, DATA) VALUES(?,?,?)');
pstmt.setInteger(1,1);
pstmt.setString(2,"text/plain");
pstmt.setString(3,data);
pstmt.execute();
pstmt.close();
conn.commit();
conn.close();
doResponse(200,'');
$.response.contentType = 'text/plain';
$.response.setBody('Upload ok');
$.response.status = 200;
}
Что делать, если я хочу отправить массив json-объекта? Как я могу получить к ним доступ в HANA? Когда я отправляю данные с помощью сообщения ajax, я не вижу никаких данных о hana. Например: 'type:" PUT ", processData: false, contentType: file.type, data: objectArray', любые предложения? – user557657
Нет службы «готового к употреблению» от XS, которая позволяет вам это делать. Разумеется, вы можете создать таблицу в базе данных HANA, создать BLOB типа столбца и затем создать службу на XS, которая позволяет загружать файл с вашего интерфейса. Надеюсь, это поможет.
Попробуйте https: // uploadcare. com /, я использую его для обработки пользовательских загрузок и очень счастлив, что мне не нужно справляться с этим сам. – Fedor