javascript - Android文件上传 - 文件名错误, native 浏览器

标签 javascript php android jquery

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

C:\fakepath\image:12045

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

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

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 native 浏览器中的错误还是我必须使用其他方法。

有没有人遇到同样的问题并且可能找到了解决方案?

最佳答案

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

你可以按照我的解决方案here .

关于javascript - Android文件上传 - 文件名错误, native 浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27376005/

相关文章:

Android - Firebase 通知不工作

javascript - 如何为最小的构建尺寸导入 Lodash

javascript - jquery中有动态折线图吗?

javascript - 我无法让这个背景出现在 div 中

php - 从 IN 子句查询中获取值

php - 如何在一台服务器上使用两个不同的 PHP 版本

php - MySql 按 menu_id 分组

javascript - 使用动态路径与 mongoose 进行更新

java - 使用 gson 将 json 字符串转换为 POJO

java - 我可以将按钮放入微调器中吗