2014-01-31 1 views
0

У вас возникли проблемы с получением файла переноса cordova для работы.Ошибка загрузки изображения с андроида androido

Я читаю журналы, и кажется, что файл передается, но сервер отделяет расширение и записывает 0 размер. Использование обработчика сервера загрузки файлов blueimp. Обработчик загрузки работает с моими сценариями jquery. Раньше я работал. Не уверен, что изменилось, и все внезапно не написало файл правильно.

Вот бревно из LogCat

D/FileTransfer(22082): Sent 100387 of 100387 
D/FileTransfer(22082): response code: 200 
D/FileTransfer(22082): response headers: {null=[HTTP/1.1 200 OK], Access-Control 
-Allow-Origin=[*], Cache-Control=[no-store, no-cache, must-revalidate], Connecti 
on=[close], Content-Disposition=[inline; filename="files.json"], Content-Type=[t 
ext/plain], Date=[Fri, 31 Jan 2014 08:28:24 GMT], Pragma=[no-cache], Server=[Apa 
che/2.4.7 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4], Transfer-Encoding=[chun 
ked], Vary=[Accept], X-Android-Received-Millis=[1391156904056], X-Android-Respon 
se-Source=[NETWORK 200], X-Android-Sent-Millis=[1391156902868], X-Content-Type-O 
ptions=[nosniff], X-Powered-By=[PHP/5.4.23]} 
D/FileTransfer(22082): got response from server 
D/FileTransfer(22082): {"files":[{"name":"52eb5ea9309fe","size":0,"type":"multip 
art\/form-data;boundary=+++++","error":"abort","deleteUrl":"http:\/\/drayagedev. 
fr8taxi.com\/images\/uploader\/?file=52eb5ea9309fe","deleteType":"DELETE"}]} 
D/CordovaLog(22082): file:///android_asset/www/js/dashboard_driver.js: Line 305 
: Code = 200 
I/chromium(22082): [INFO:CONSOLE(305)] "Code = 200", source: file:///android_ass 
et/www/js/dashboard_driver.js (305) 
D/CordovaLog(22082): file:///android_asset/www/js/dashboard_driver.js: Line 306 
: Response = {"files":[{"name":"52eb5ea9309fe","size":0,"type":"multipart\/form- 
data;boundary=+++++","error":"abort","deleteUrl":"http:\/\/drayagedev.fr8taxi.co 
m\/images\/uploader\/?file=52eb5ea9309fe","deleteType":"DELETE"}]} 
I/chromium(22082): [INFO:CONSOLE(306)] "Response = {"files":[{"name":"52eb5ea930 
9fe","size":0,"type":"multipart\/form-data;boundary=+++++","error":"abort","dele 
teUrl":"http:\/\/**.com\/images\/uploader\/?file=52eb5ea9309fe", 
"deleteType":"DELETE"}]}", source: file:///android_asset/www/js/dashboard_driver 
.js (306) 
D/CordovaLog(22082): file:///android_asset/www/js/dashboard_driver.js: Line 307 
: Sent = 98416 
I/chromium(22082): [INFO:CONSOLE(307)] "Sent = 98416", source: file:///android_a 
sset/www/js/dashboard_driver.js (307) 

Вот функция

function uploadPhoto(imageURI) { 
    var options = new FileUploadOptions(); 
    options.fileKey="file"; 
    options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1); 
    options.mimeType="image/jpeg"; 
    options.headers = { 
     Connection: "close" 
    } 
    options.chunkedMode = false; 

    var params = {}; 
    params.fullpath = imageURI; 
    params.name = options.fileName; 

    //options.params = params; Uncommenting has no effect 

    var ft = new FileTransfer(); 
    ft.upload(imageURI, encodeURI("http://**/images/uploader"), checkUploadStatus, checkUploadStatus, options); 
} 

ответ

0

Бросил с помощью Jquery FileUpload в качестве обработчика загрузки. Создал простой обработчик загрузки PHP, и он работает. Просто не хватает причудливого изменения размера и т. Д.

1

Вернулся к загрузчику загрузки файла blueimp. Как выясняется, это действительно работает.

Кордова Android File Transfer использует «файл» в качестве ключа, а Upload Hander ищет «файлы». Таким образом, изменение файла в файлы делает обработчик PHP Serverside. Теперь я могу использовать тот же обработчик как для webapp, так и для cordova.

FYI не забудьте использовать JSON PARSE, чтобы прочитать ответ после загрузки.

Полный код следующим образом.

Кордова Кнопка камеры

$('body').on('click', '.btn_upload', function(){ 

    navigator.camera.getPicture(uploadPhoto, onFail, { quality: 75, 
     destinationType: Camera.DestinationType.FILE_URI 
    }); 

}) 

function onFail() { 

} 


function uploadPhoto(imageURI) { 

startSpin(); 

var options = new FileUploadOptions(); 
options.fileKey="files"; 
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1); 
options.mimeType="image/jpeg"; 
options.headers = { 
    Connection: "close" 
} 
options.chunkedMode = false; 

var params = {}; 
params.fullpath = imageURI; 
params.name = options.fileName; 

//options.params = params; 

var ft = new FileTransfer(); 
ft.upload(imageURI, encodeURI("http://**/images/uploader/index.php"), win, onFail, options); 

} 


function win(result) { 

if(result.responseCode == "200"){ 

    var result = jQuery.parseJSON(result.response); 

    var filename = result.files[0]['name']; 
    var filethumbnailUrl = result.files[0]['thumbnailUrl']; 
    var filelargeUrl = result.files[0]['largeUrl']; 
    var filemediumUrl = result.files[0]['mediumUrl']; 
    var fileurl = result.files[0]['url']; 


    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^