2014-11-06 1 views
1

Мне нужно реализовать функцию загрузки файлов в моем проекте phonegap. Пользователь должен иметь возможность загружать файлы любого типа из памяти телефона или SD-карты. Я попробовал input type = "file", но не поддерживается в android 4.4. Я также попробовал API камеры для телефонных разговоров, но он поддерживается только медиафайлами. Я нашел плагин для выбора файла cordova (https://github.com/cdibened/filechooser), но я не могу заставить его работать. Функция обратного вызова успеха не запускается сразу после выбора файла. Пожалуйста, найдите мой код ниже,Плагин для родных файлов Corova для Android не работает

<input type="file" id="fileinput" name="fileinput"/>  

$("#fileinput").bind('click',function(){ 

     console.log("choose file selected"); 
     filechooser.open({}, fileChooseSuccess, fileChooseFailed); 
}); 


function fileChooseSuccess(data) { 
     var filepath = data.filepath; 
     console.log("file path:"+filepath); 
} 

function fileChooseFailed(msg) { 
     console.log(msg); 
} 

Первая функция обратного вызова успеха запускается, когда пользователь выбирает второй файл. Аналогично, вторая функция обратного вызова успеха запускается, когда пользователь выбирает третий файл (протестирован с Android 4.4.2). Я не могу решить эту проблему. Обязателен ли первый аргумент для «filechooser.open»? Что мне нужно для поддержки всех типов файлов?

В документации к плагину написано, что «вы должны изменить com.ianhanniballake.localstorage.documents в вашем манифесте, а также поле LocalStorageProvider.AUTHORITY». Что мне нужно изменить?

Любые предложения приветствуются.

ответ

0

Тип входного файла не поддерживается в phonegap/cordova. Сожалею.

Вы должны использовать плагин FileTransfer, как показано в этом примере и обсуждается здесь How to upload file with Phonegap and JqueryMobile?:

function onDeviceReady() { 

    // Retrieve image file location from specified source 
    navigator.camera.getPicture(uploadPhoto, 
           function(message) { alert('get picture failed'); }, 
           { quality: 50, 
           destinationType: navigator.camera.DestinationType.FILE_URI, 
           sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY } 
           ); 

} 

function uploadPhoto(imageURI) { 
    var options = new FileUploadOptions(); 
    options.fileKey="file"; 
    options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1)+'.png'; 
    options.mimeType="text/plain"; 

    var params = new Object(); 

    options.params = params; 

    var ft = new FileTransfer(); 
    ft.upload(imageURI, encodeURI("http://some.server.com/upload.php"), win, fail, options); 
} 

function win(r) { 
    console.log("Code = " + r.responseCode); 
    console.log("Response = " + r.response); 
    console.log("Sent = " + r.bytesSent); 
} 

function fail(error) { 
    alert("An error has occurred: Code = " + error.code); 
    console.log("upload error source " + error.source); 
    console.log("upload error target " + error.target); 
} 
+4

Но как бы вы обработки сценариев для файлов, которые не являются изображения/видео, потому что камера плагин апи Кордовы только позволяет выбрать изображений, а не других типов файлов? –

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

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