Файл изображения Titanium 5.1.1.GA SDK не загружается в ios

Вот мой код HTTPClient для загрузки изображения на сервер. То же самое работает в 3.5.0.GA SDK и 4.1.0.GA SDK, но не работает в новых SDK 5.1.1.GA и 5.1.2.GA.

var filename = "sample.png";
//Pointer to the file to be uploaded.
var uploadingFile = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, filename);

Ti.API.info('uploadingFile ' + uploadingFile.exists());
//We are creating a new xhr instead of calling the existing one because we dont want timeout when uploading data.
var xhr = Titanium.Network.createHTTPClient({
    validatesSecureCertificate : false,
    enableKeepAlive : true,
    onload : function() {
        uploadingFile = null;
        Ti.API.info('Success '+tthis.responseText);         
    },
    onerror : function(data) {
        uploadingFile = null;
        Ti.API.info('this.status '+this.status);
    }
});

xhr.onsendstream = function(e) {
    var uploadTime = new Date();
    Ti.API.info('UPLOADING PROGRESS: ' + progress + ' ' + uploadTime.getHours() + ":" + uploadTime.getMinutes() + ":" + uploadTime.getSeconds());
};

xhr.open('POST', httpClient.getUserDomainInfo(config.URLs.imageupload, tenant));
xhr.send({
    file : uploadingFile.read(),
    claimId : claimID,
    filename : filename,
    description : ''
});

Статус ошибки выглядит как 500 Internal Server Error.

Это проблема в SDK или что-то, что мне нужно изменить в моем коде.

Помогите мне, пожалуйста.


person Venkatesh    schedule 20.01.2016    source источник
comment
Ошибка 500 означает, что ваш сервер занят или не отвечает в это время. Пожалуйста, проверьте, работает ли ваш URL нормально или нет.   -  person Suraj kochale    schedule 20.01.2016
comment
у вас также может быть ошибка в сценарии загрузки вашего сервера   -  person Sebastian    schedule 20.01.2016
comment
Тот же URL-адрес и тот же код работают в 3.5.0.GA SDK и 4.1.0.GA SDK. Итак, я предполагаю, что сценарий загрузки сервера хорош. Только сейчас попробовал в 4.1.0GA все заработало. Я снова попробовал в 5.1.1GA, но это не сработало.   -  person Venkatesh    schedule 20.01.2016
comment
Я сталкиваюсь с той же проблемой. Все еще ищу решение.   -  person Romain R.    schedule 31.03.2017


Ответы (2)


Код ниже демонстрирует загрузку файла. Измените в соответствии с вашим кодом.

f1 = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,<image name>);
i1 = f1.read();
xhr = Titanium.Network.createHTTPClient();
xhr.open('POST','<url to call>', false); // false makes it synchronous
xhr.onload = function() { handleAfterSentRouting(this.responseText);   };
xhr.send({media1: i1}); // media1 is the field the file information is in when you upload

Спасибо.

person Sharif Abu Darda    schedule 20.01.2016

Я перенес то же самое, и решение после нескольких недель было очень простым, вам просто нужно создать другую страницу веб-службы на сервере только для загрузки файла без передачи каких-либо других текстовых параметров, в вашем случае отредактируйте параметры xhr.send, чтобы включить только ваш файл как следует:

xhr.send({
    file : uploadingFile
}); 

поэтому сделайте еще одну функцию xhr, связанную с другой страницей веб-сервера для других ваших переменных:

claimId : claimID,
filename : filename,
description : ''

Оно работает ;)

person Talal Manaa    schedule 21.05.2017