使用Javascript中的Dropbox Core API将文件上载到Dropbox
Upload files to Dropbox using a Dropbox Core API in Javascript
我正在开发一个简单的chrome扩展,它需要将文件上传到用户的dropbox文件夹。我使用下面提到的简单AJAX请求上传文件,但它适用于扩展名为.txt, .json, .c, etc
的文件,即mime type
为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.readAsBinaryString
或reader.readAsArrayBuffer
。(我自己还没有测试过。)
编辑
经过自己的测试,我发现readAsArrayBuffer
正是您所需要的,但您还需要将processData: false
作为选项添加到$.ajax
中,以防止jQuery试图将数据转换为表单提交中的字段。
还要确保使用dataType: 'json'
正确解析来自服务器的响应。
相关文章:
- 使用Javascript中的Dropbox Core API将文件上载到Dropbox
- 通过 Dropbox API 上传时的文件内容不一致
- 在使用java使用dropbox选择器从dropbox中提取文件后,如何将文件存储在服务器中
- 如何使用JavaScript将文件上传到dropbox
- 使用processing.js/javascript在dropbox中写入txt文件
- 包括从外部文件到HTML的查询功能(使用Dropbox进行本地测试)
- 使用 Dropbox.choose() 函数选择多个文件
- 尝试将 Dropbox 文件上传 API 链接到基本的 HTML 表单文件输入
- 如何使用 Dropbox 插入式应用始终从“我的帐户”中选择文件
- 如何从 dropbox c# 读取文件
- Chrome 扩展程序 - 将 CSV 文件上传到 Dropbox 格式问题
- Public Dropbox 中的 XMLHttpRequest 访问文件
- Dropbox放入保护程序本地主机文件错误
- 使用Guzzle和Ajax从Dropbox下载文件
- Dropbox直接从浏览器上传文件
- 如何使用flow.js的ng流从dropbox下载文件
- 在 Node.js CLI 中从 Dropbox 下载文件
- 尝试用node.js走一个dropbox文件夹树
- 如何获得在Dropbox文件夹的文件的共享链接列表
- 移动应用程序的dropbox api是否使用本地dropbox文件夹来获取和存储文件