2014-12-09 3 views
1

Есть много вопросов о загрузке файлов с Android, но большинство из них без ответа, и фактически ни один из них не связан с javascript или php. Я вижу странное поведение при выборе файла для загрузки на Android (4.4.4) собственного браузера (HTC One_M8), и то, что он дает мне, это;Загрузка файла Android - неправильное имя файла, собственный браузер

C: \ fakepath \ Изображение: 12045

"Fakepath" часть оленья кожа беспокоит меня, что беспокоит меня то, что я не могу получить имя файла из/входного типа = "файл"/html тегов. Я отправляю файлы с $ .ajax, и он работает на Chrome, FF, Safari (рабочий стол & iPhone). Он также работает на моем M8 с Chrome, но не с собственным браузером.

Это то, что я использую для получения выбранных файлов;

var filedata = document.getElementById("userFile"); 
formdata = false; 
if (window.FormData) { 
    formdata = new FormData(); 
} 
var i = 0, len = filedata.files.length, img, reader, file; 

for (; i < len; i++) { 
    file = filedata.files[i]; 

    if (window.FileReader) { 
     reader = new FileReader(); 
     reader.onloadend = function(e) { 
      // showUploadedItem(e.target.result, file.fileName); 
     }; 
     reader.readAsDataURL(file); 
    } 
    if (formdata) { 
     formdata.append("userFile[]", file); 
    } 
} 

И это, как я посылаю их handle.php

$.ajax({ 
     url: 'handle.php', 
     type: 'POST', 
     xhr: function() { 
      var myXhr = $.ajaxSettings.xhr(); 
      if(myXhr.upload){ 
      } 
      return myXhr; 
     }, 
     data: formdata, 
     dataType:'json', 
     cache: false, 
     contentType: false, 
     processData: false, 
     beforeSend: function(xhr, opt) { 
      $('#control-console').append($('input[type=file]').val()); 
      $('input[type=file]').val(""); 
     }, 
     success: function() { 
     }, 
     complete: function(podatki) { 
      $('#control-console').append(podatki.responseJSON.name); 
      console.log(podatki) 
      $.each(podatki.responseJSON.name, function(i, val) { 
       console.log(val); 
       insertFrame(val); 
      }); 
      processing = false; 

     } 
    }); 

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

Кто-нибудь сталкивался с той же проблемой и, возможно, нашел решение?

ответ

-2

Что я исследовал за последние несколько часов, когда загружаемый файл находится в галерее для телефона Android, из-за проверок безопасности выше проблемы происходит. Имя файла, расширение, размер не будут читаемы.

Чтобы обойти это: 1- Нажмите кнопку просмотра, вы попадете в галерею своего устройства. 2- В правом углу галереи нажмите «Параметры изображения» («...») и «Включить внутреннее хранилище». 3- Убедитесь, что загруженный файл находится во внутреннем хранилище. 4- Доступ к опции «Внутреннее хранилище» при загрузке. 5- Файл должен показывать правильное имя.

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