【问题标题】:Android file upload - wrong file name, native browserAndroid文件上传-文件名错误,原生浏览器
【发布时间】:2014-12-09 09:56:29
【问题描述】:

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

C:\fakepath\image:12045

“Fakepath”部分并不困扰我,困扰我的是我无法从 /input type="file"/ html 标签中获取文件名。 我正在使用 $.ajax 发送文件,它适用于 Chrome、FF、Safari(桌面和 iPhone),它也适用于带有 Chrome 的 M8,但不适用于本机浏览器。

这是我用来获取选定文件的;

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 原生浏览器中的错误还是我必须使用不同的方法。

有没有人遇到过同样的问题,也许找到了解决方案?

【问题讨论】:

  • 您对此有什么解决方案吗?对于pdf文件,我在android中遇到了同样的问题。文件名是假文件名,文件类型为空。
  • 其实我做过,如果你使用jQuery文件上传脚本(github),你不会遇到这个问题。上面的代码我从来没有真正适用于所有手机和平板电脑,所以最好保留它并使用 jQ 脚本。

标签: javascript php android jquery


【解决方案1】:

我进行了很多研究,并且我只为 android 制定了解决方案。当您在浏览器和 iPhone 中时,您可以使用您的解决方案,因为它运行良好。但是,android有一个安全问题。所以,我不得不为android制定一个解决方案。

您可以关注我的解决方案here

【讨论】:

  • 虽然您的解决方案可能有效,但它是一个非常复杂的解决方案。但无论如何,我希望它对某人有所帮助。
  • 是的。由于 android 安全问题,我必须以这种复杂的方式进行操作。
【解决方案2】:

我在过去几个小时里研究的是,当上传的文件在 android 手机的图库中时,由于发生上述问题的安全检查。没有文件名、扩展名、大小是可读的。

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

【讨论】:

    猜你喜欢
    • 2014-02-11
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 2018-09-14
    相关资源
    最近更新 更多