2017-02-06 3 views
1

Я застреваю, пытаясь прочитать изображение со шлюза.Как читать изображение с помощью oDatamodel V2 в sapui5?

Если я запускаю этот URI непосредственно в шлюзе SAP он работает нормально, и данные изображения для чтения: /sap/opu/odata/sap/ZSA_USERS_SRV/UserPhotoSet('[email protected]')/$value»

Теперь я хочу, чтобы прочитать это изображение в моем sapui5 приложения, используя код, приведенный ниже, но я получаю ошибку «EventProvider sap.ui.model.odata.v2.ODataModel - данные не были извлечены с помощью службы:»

Что я здесь отсутствует?

var oModel = this.getOwnerComponent().getModel(); 
    oModel.read("/UserPhotoSet('[email protected]')/$value", { 
     success: function(oData, oResponse) { 
      alert("Success read userphotto"); 
      img.setSrc(oData); 
     }, 
    }); 
+0

работает ли uri /sap/opu/odata/sap/ZSA_USERS_SRV/UserPhotoSet('[email protected]')/$value в браузере? –

+0

Привет! Да, это хорошо работает в браузере! –

+0

Какие данные ответа вы получаете от успеха этой службы. – Saddamhussain

ответ

1

не используйте oModel.read (...)! В вашем случае все йо и нужно сделать, это

img.setSrc("/path/to/my/service/UserPhotoSet('[email protected]')/$value"); 

Свойство ГКЗ изображения строка - it's a URI!

Относительный или абсолютный путь к URL-адресу, в котором хранится файл изображения. путь будет адаптирован к плотности осознает формат в соответствии с плотности устройства после конвенции,

Конечно, вы должны заменить «/ путь/к/мой/услуги /» с реальным путь ...

+0

Привет, Наби! Спасибо за ответ! Я сделал то, что вы рекомендовали, но изображение не загружается. Это то, что я положил в src изображения в моем XML-фрагменте: '' В сети ответ только говорит: «Этот запрос не имеет доступных данных ответа», и я не вижу error there:/ –

+0

Как правило, с $ value вы возвращали бы содержимое реального файла изображения вместо строки base64. После того, как вы добавили дополнительные подсказки, я могу увидеть, как ваша служба возвращает файл в качестве строки base64, правильно? И это потому, что файл хранится таким образом в БД. Я не уверен, правильно ли обработчик изображения может обрабатывать URI данных. Во всяком случае, что вы можете сделать, это декодировать строку base64 на бэкэнд, прежде чем отправлять его во внешний интерфейс. Выполнять это каждый раз не то, что я бы предпочел ... – Nabi

+0

Трудно помочь, не зная всех деталей службы yor, но, возможно, приведенные примеры на https://blogs.sap.com/2017/02/08/display-images-in-sapui5-received-from-the-northwind-odata-service/help. – Nabi

0

В XML:

<Image id="imgPreviewForm" 
     class="sapUiSmallMarginTopBottom" 
     width="300px" height="150px" visible="true" src=""> 
</Image> 

В Javascript контроллере:

var img=this.getView().byId("imgPreviewForm"); 
    img.setSrc("/sap/opu/odata/sap/ZTEST_PDF_SRV/FileSet 
       ('Test.jpg')/$value"); 
+0

, он работает нормально, но мой аспект отправляет один запрос, чтобы получить больше изображений, которые будут храниться на модели. эта модель установлена ​​для просмотра. как я могу это сделать? –