Android文件上传 - 错误的文件名,本机浏览器

时间:2014-12-09 09:56:30

标签: javascript php android jquery

关于使用Android上传文件存在很多问题,但大多数都没有回答,实际上没有一个与javascript或php相关。 在Android(4.4.4)本机浏览器(HTC One_M8)上选择要上传的文件时,我看到了奇怪的行为,它给我的是这个;

C:\ fakepath \图像:12045

“Fakepath”部分并不打扰我,困扰我的是我无法从/ input type =“file”/ 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 个答案:

答案 0 :(得分:0)

我已经研究了很多,我只为android做了一个解决方案。当您使用浏览器和iPhone时,您可以使用您的解决方案,因为它工作正常。但是,android存在安全问题。所以,我必须为Android做一个解决方案。

您可以按照我的解决方案here进行操作。

答案 1 :(得分:-2)

我在过去几个小时内研究的是当上传的文件在Android手机的图库内时,由于安全检查上面出现问题。没有文件名,扩展名,大小可读。

要解决此问题: 1-单击浏览按钮,您将进入设备的图库。 2-在图库的右上角单击选项图像(“...”)并启用“内部存储”。 3-确保您上传的文件位于内部存储中。 4-上传时访问“内部存储”选项。 5-文件应显示正确的名称。

相关问题