gpt4 book ai didi

javascript - 使用 Javascript 中的 Dropbox Core API 将文件上传到 Dropbox

转载 作者:行者123 更新时间:2023-11-30 12:26:12 24 4
gpt4 key购买 nike

我正在开发一个简单的 chrome 扩展程序,它需要将文件上传到用户的保管箱文件夹。我正在使用下面提到的简单 AJAX 请求来上传文件,但是它适用于扩展名为 .txt、.json、.c 等 的文件,即 mime 类型 的类型为 text/plain 或类似类型,但所有其他文件类型(如 pdf、图像文件等)都会损坏并产生空白内容。我在以正确的方式上传文件时错过了什么。

function startUpload()
{
var folderPath = $(this).closest('tr').attr('path')+'/';
var file = $("#upload_file")[0].files[0];
if (!file){
alert ("No file selected to upload.");
return false;
}

var reader = new FileReader();
reader.readAsText(file, "UTF-8");
reader.onload = function (evt) {
uploadFile(folderPath+file.name,evt.target.result,file.size,file.type);
}
}

//function to upload file to folder
function uploadFile(filepath,data,contentLength,contentType){
var url = "https://api-content.dropbox.com/1/files_put/auto"+filepath;
var headers = {
Authorization: 'Bearer ' + getAccessToken(),
contentLength: contentLength,
};
var args = {
url: url,
headers: headers,
crossDomain: true,
crossOrigin: true,
type: 'PUT',
contentType: contentType,
data : data,
dataType: 'json',
success: function(data)
{
getMetadata(filepath.substring(0,filepath.lastIndexOf('/')),createFolderViews);
},
error: function(jqXHR)
{
console.log(jqXHR);
}
};
$.ajax(args);
}

最佳答案

我认为问题出在 reader.readAsTextFile(file, "UTF-8")。如果文件不是文本文件,这将误解内容。我认为您需要 reader.readAsBinaryStringreader.readAsArrayBuffer。 (我自己没有测试过。)

编辑

在我自己测试之后,我发现 readAsArrayBuffer 是你所需要的,但你还需要添加 processData: false 作为 $.ajax 的选项 以防止 jQuery 尝试将数据转换为表单提交中的字段。

还要确保使用 dataType: 'json' 来正确解析来自服务器的响应。

关于javascript - 使用 Javascript 中的 Dropbox Core API 将文件上传到 Dropbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29288829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com