javascript - 使用 JQuery 通过 AJAX 从 OneDrive 上传文件时出错

标签 javascript jquery ajax file-upload

我在创建拖放文件上传界面时遇到了一些问题 - 它非常适合本地文件,但是当我尝试从资源管理器中的 OneDrive 拖动到“放置”区域时,控制台会报告 网络:ERR_FAILED

在某些情况下是否无法从非本地文件进行拖放操作?如果是这样的话,有什么样的限制?例如,Mac 上的 iCloud 似乎运行良好。

上传者似乎认为这是一个有效的文件,但似乎无法访问它或其他东西。

以防万一它有帮助,这里是相关的代码:

function handleFileUpload(files,obj) {
    for (var i = 0; i < files.length; i++) {
        var fd = new FormData();
        fd.append('file', files[i]);    
        status.setFileNameSize(files[i].name,files[i].size);    
        sendFileToServer(fd,status);
    }
}

function sendFileToServer(formData,status){
    num_uploaded_files++;
    checkUploadLimit();
    var uploadURL = "uploader.php?request=upload_file"; //Upload URL
    var jqXHR=$.ajax({
        xhr: function() {
            var xhrobj = $.ajaxSettings.xhr();
            return xhrobj;
        },
        url: uploadURL,
        type: "POST",
        contentType:false,
        processData: false,
        cache: false,
        data: formData, 
        success: function(data, textStatus, jqXHR){
            status.setProcessing();
            response = $.parseJSON(data);
            if(response.success == 1) {
                status.setType(response.file_type);
                status.uploadComplete(response.id,response.file_type,response.new_filename);
                type = response.file_type;
            } else {
                status.setFailure(response.failure_reason);
            }
        },
        error: function(jqXHR, textStatus, errorThrown) {
            status.setFailure(errorThrown);
        }
    }); 
    status.setAbort(jqXHR);
}
$( document ).ajaxError(function( event, jqxhr, settings, thrownError ) {
  console.log('AJAX error');
});

预先感谢您的任何帮助或建议!

最佳答案

看起来确实是 OneDrive 未在本地存储文件的问题。这是一个例子:

Online-only vs Available offline

在上面的示例中,顶部文件(可离线使用)上传良好,而下面的文件则不然。

据我所知,无法通过拖放上传仅限在线的文件(或者至少无法使用与上述方法类似的代码)。相反,您需要一个 input type="file" 才能执行此操作(然后 Windows 会自动在本地下载文件以准备上传)。

用户可以右键单击文件并选择“脱机可用”,这样可以解决这些文件的问题。

我在 Google 云端硬盘上测试了相同的文件,并且出现了相同的问题。如果 Google 无法做到这一点,那么我也不太可能做到这一点,但如果其他人找到了解决方案,请在下面发布您的答案,我将非常乐意接受。

关于javascript - 使用 JQuery 通过 AJAX 从 OneDrive 上传文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46670092/

相关文章:

javascript - 检查不同服务器上的文件

javascript - 叠加在图像上的谷歌地图会使图像消失

Javascript 原型(prototype)继承怪异

javascript - 获取 Bootstrap Radio 插件选定的值

javascript图像加载只能运行一次

php - ajax 用不同的数据加载更多按钮

javascript - 查看网站的实际源代码

javascript - ES6 使用命名空间动态导入?

Javascript 函数无法返回元素

javascript - 有没有办法动态更改JavaScript中选择标签的值和显示?