Не сериализуйте FormData
с POST
на сервере. Сделайте это:
this.uploadFileToUrl = function(file, title, text, uploadUrl){
var payload = new FormData();
payload.append("title", title);
payload.append('text', text);
payload.append('file', file);
return $http({
url: uploadUrl,
method: 'POST',
data: payload,
//assign content-type as undefined, the browser
//will assign the correct boundary for us
headers: { 'Content-Type': undefined},
//prevents serializing payload. don't do it.
transformRequest: angular.identity
});
}
Затем используйте его:
MyService.uploadFileToUrl(file, title, text, uploadUrl).then(successCallback).catch(errorCallback);
Разница между работой в отладчике и без него может быть связана с отключением отладчика ASLR. Это может скрыть проблему, когда вы пытаетесь ее отладить.
Попробуйте отменить это. кажется , что в LLDB это должно быть сделано командой
settings set target.disable-aslr false
, которая должна отменить отключение ASLR. В GDB это будет
set disable-randomization off
Не забудьте перезапустить программу под вашим отладчиком (без перезапуска отладчика!), Чтобы этот параметр вступил в силу. В GDB это команда run
, нечто подобное должно быть в LLDB.