`
liugang594
  • 浏览: 987546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于Java的Dropbox文件操作

 
阅读更多

Dropbox提供了基于各种类型的API和应用类型的开发工具和接口,详细的可以参考 https://www.dropbox.com/developers/core 。这里我只介绍基于Java的文件操作实现,可以参考 https://www.dropbox.com/developers/core/start/java 。

 

一、创建应用

有点像Google的APP,需要先创建一个应用,创建应用的链接为 https://www.dropbox.com/developers/apps (前提是你已经有了Dropbox账号,并已经登陆了Dropbox),点击 Create App 后有两个选项:

  • Dropbox  API App
  • Drop-ins App

Drop-ins App 从它的介绍看来,我理解是基于Web和Mobile的应用的API,所以这里我选择 Dropbox API App,剩下的选项如下图:

App的名字可能需要另取,以通过验证。

 

提交完以后就进入下一页了,对应于刚创建的App的详细信息:

 这里面最重要的部分就是红色框里的App key 和App Secret,需要用他们来获取AccessToken,以允许最终的操作的执行,蓝色部分可以指定获取Authorize Code时的返回链接,也即获取Authorize Code所指定URL里的redirect_url参数。 不过对我们的Demo应用,这里的所有值都可以为空,不影响。

 

二、添加依赖

App创建完后,基本上就可以开始应用的开发了。不过还差一点点。我们先要去把Dropbxo相关的依赖加上。Dropbox提供了一个用于Java应用开发的工具包,链接为:https://www.dropbox.com/developers/core/sdks/java 。如果是普通的Java应用,可能就需要安装它提供的JDK安装包。如果是Maven应用,则简单的添加以下依赖即可:

<dependency>
  <groupId>com.dropbox.core</groupId>
  <artifactId>dropbox-core-sdk</artifactId>
  <version>[1.7,1.8)</version>
</dependency>

 我这里使用基于Maven依赖的方式。不过哪一种方式对于后面的开发都不影响。

 

三、获取Authorize Code

Dropbox应用是基于HTTP和OAuth认证方式进行访问的。因此在真正操作之前,我们首先需要获取一个有效的Access Token,然后在以后的访问和操作中都使用这个Access Token进行认证。

 

这个时候就需要用到上面的App Key和App Secret了。我们需要用它去申请一个Authorize code。其实就是一个用于生成Authorize Code的链接,这个链接打开以后有两个选项:取消 和 同意。如果App拥有者(App Owner,在咱们的例子,也就是我们自己)点击了同意,则会生成一个Authorize Code,App拥有都需要把这个Code发给访问应用的申请人。

 

每个应用对应的链接是固定的格式,最简单的就是Authorize URL:

https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&response_type=code

(替换APP_KEY为应用对应的App Key,看上图)

 

对于每个应用申请者来说,你都需要把三个值发给他:

  • App Key
  • App Secret
  • 点击Authorize URL里的 同意 后生成的一个Authorize Code.

如果用代码的方式获取Authorize URL,则代码如下:

		String APP_KEY = "APP_KEY";
		String APP_SECRET = "APP_SECRET";

		DbxAppInfo appInfo = new DbxAppInfo(APP_KEY, APP_SECRET);

		DbxRequestConfig config = new DbxRequestConfig("dropbox/1.0", Locale
				.getDefault().toString());
		DbxWebAuthNoRedirect webAuth = new DbxWebAuthNoRedirect(config, appInfo);

		// Have the user sign in and authorize your app.
		String authorizeUrl = webAuth.start();

 

三、获取Access Token

有了App Key,App Secret和Authorize Code,以后,可以用以下代码(其实这个代码最终构建的就是一个HTTP的请求,所以也可以直接发HTTP的请求)去获取Access Token:

		String APP_KEY = "APP_KEY";
		String APP_SECRET = "APP_SECRET";
		String AUTHORIZE_CODE = "AUTHORIZE_CODE";

		DbxAppInfo appInfo = new DbxAppInfo(APP_KEY, APP_SECRET);

		DbxRequestConfig config = new DbxRequestConfig("dropbox/1.0", Locale
				.getDefault().toString());
		DbxWebAuthNoRedirect webAuth = new DbxWebAuthNoRedirect(config, appInfo);

		DbxAuthFinish authFinish = webAuth.finish(AUTHORIZE_CODE);

		String accessToken = authFinish.accessToken;

 

这个Access Token可以存起来,以重复利用,可以使用以下代码将它存到一个文件里(也可以是其他地方):

		DbxAuthInfo authInfo = new DbxAuthInfo(accessToken, appInfo.host);
		DbxAuthInfo.Writer.writeToFile(authInfo, new File("access.auth"));

  

读取的时候,可以用类似的方式:

			DbxAuthInfo readFromFile = DbxAuthInfo.Reader.readFromFile(new File("access.auth"));
			String accessToken = readFromFile.accessToken;

 

四、操作Dropbox

有了Access Token后就可以开始操作Dropbox了。可以使用 DbxClient 对象来操作:
DbxClient client = new DbxClient(config, accessToken);

# 遍历文件

		DbxEntry.WithChildren listing = client.getMetadataWithChildren("/");
		for (DbxEntry child : listing.children) {
			System.out.println("	" + child.name + ": " + child.toString());
		}
 

# 读取文件

		FileOutputStream os = new FileOutputStream("output.txt");
		try {
			DbxEntry.File downloadedFile = client.getFile("magnum-opus.txt",
					null, os);
		} finally {
			os.close();
		}
 

# 上传文件

		FileInputStream inputStream = new FileInputStream(new File("output.txt"));
		try {
			DbxEntry.File uploadedFile = client.uploadFile("/magnum-opus.txt",
					DbxWriteMode.add(), inputFile.length(), inputStream);
		} finally {
			inputStream.close();
		}
 

 

 

  • 大小: 15.9 KB
  • 大小: 21.3 KB
分享到:
评论

相关推荐

    dropbox demo

    由于描述中没有提供具体的信息,我们将基于一般性的Dropbox API使用和常见功能来探讨相关的IT知识点。 【源码】标签意味着我们可以期待看到实际的编程代码,可能是用Java、Python、JavaScript或任何其他支持Dropbox...

    s3dropbox:这是一个Java Swing应用程序,您可以将文件拖放到其中,然后将文件上传到您的Amazon S3帐户

    Amazon S3的基于Java的GUI前端 这是一个Java Swing应用程序,您可以在其中拖放文件,然后将文件上传到您的Amazon S3帐户。 您可以创建指向这些文件的公共链接,并将这些链接粘贴到电子邮件中,以便稍后可以通过单击...

    完整版文件操作.rar

    在IT领域,文件操作是日常工作中不可或缺的一部分,无论是开发、测试还是系统管理,都需要对文件进行各种处理。这里我们以“完整版文件操作.rar”为例,深入探讨一下文件操作的相关知识点。 首先,RAR是一种常见的...

    PC端java记事程序

    标题中的“PC端java记事程序”是一款基于Java开发的桌面应用程序,专为记录和管理日常事务而设计。它提供了一个简洁的用户界面,让用户能够方便地存储、查看和编辑笔记。程序的核心特性包括记住用户的最后操作,允许...

    基于Hadoop的在线文件管理系统-开题报告.pdf

    《基于Hadoop的在线文件管理系统的设计与实现》 在当今互联网时代,文件管理系统已经成为人们日常生活中不可或缺的一部分。尤其是在企业环境中,高效、可靠的文件管理对于数据的存取、共享和协作至关重要。基于...

    基于 Electron & Vue.js 的文件同步客户端

    **基于 Electron & Vue.js 的文件同步客户端** 在现代软件开发中,Electron 和 Vue.js 是两个非常受欢迎的技术栈。它们的结合使得构建跨平台、功能丰富的桌面应用程序变得更加便捷。本项目是一个利用这两个技术构建...

    火山安卓配置与文件操作.rar

    本压缩包“火山安卓配置与文件操作.rar”可能包含了关于如何配置火山安卓环境以及进行文件操作的相关资料。下面我们将详细探讨这些知识点。 首先,火山安卓的配置通常涉及以下几个步骤: 1. **安装SDK和Android ...

    RxFile,从android上的文档提供商(drive、dropbox等)获取文件和图像或视频缩略图的rx方法.zip

    6. **Rx方法**:RxFile提供的rx方法可能是基于RxJava的Operator,如map()、flatMap()、filter()等,这些方法可以方便地转换、过滤和组合数据流,以适应不同的文件操作需求。 7. **图片和视频缩略图**:获取媒体缩略...

    Android文件管理器源代码

    4. **文件操作接口**:Android提供了`java.io`和`java.nio`包,用于Java层的文件操作。例如,`File`类用于表示文件和目录路径,`FileInputStream`和`FileOutputStream`用于读写文件,`FileReader`和`FileWriter`用于...

    java 相片管理系统

    【Java相片管理系统】是一个基于Java技术开发的用于管理和浏览照片的应用程序。它提供了一种高效、便捷的方式来组织和查看个人或集体的照片集合。在Java编程语言中,这样的系统通常利用面向对象的设计原则,结合丰富...

    pgptool:基于Java的桌面GUI应用程序,用于轻松和常规的PGP解密加密

    PGP工具PGP Tool是基于Java的桌面GUI应用程序,可轻松对文件和文本进行PGP解密/加密。 对于那些倾向于在计算机上存储敏感信息,有时将其同步到Google驱动器,Dropbox等并且不希望此信息以未加密状态存储的用户而言,...

    java网盘项目源代码

    【Java网盘项目源代码】是一个基于Java技术实现的在线存储服务系统,它允许用户上传、下载、管理和分享文件。这个项目的核心目标是提供一个安全、便捷的云存储解决方案,让用户能够通过网络访问他们的个人数据,类似...

    Android文件管理器

    1. **文件操作**:在Android中,对文件进行读写操作通常需要使用`java.io`和`java.nio`包中的类。例如,`File`类用于表示文件或目录,可以进行创建、删除、重命名等操作;`InputStream`和`OutputStream`处理文件的...

    JAVA MP3管理工具

    【JAVA MP3管理工具】是一款基于JAVA编程语言开发的实用工具,主要用于管理和组织个人或集合的MP3音乐文件。在日常生活中,随着数字音乐的普及,我们常常会积累大量的MP3文件,这些文件可能来自不同的来源,如CD抓轨...

    文件管理器(源码)

    2. **文件操作**:包括新建、打开、复制、移动、重命名、删除等基本操作。这些功能的实现涉及到文件I/O操作和系统API的调用。 3. **多选与批量操作**:允许用户一次性选择多个文件或文件夹进行操作,如批量移动或...

    检索文件的源代码资源

    在Java中,File类提供了打开、读取、写入和删除文件的方法,而java.nio.file包则引入了更现代的文件操作API;在C#中,System.IO命名空间提供了丰富的文件操作功能,如Directory和FileInfo类。了解并熟练运用这些API...

    安卓文件浏览器小程序

    其次,核心的文件操作功能实现涉及对`java.io`和`java.nio`包中类的使用,例如`File`类用于表示文件和目录,`FileInputStream`和`FileOutputStream`用于读写文件。同时,Android SDK提供了一些特定于平台的API,如`...

Global site tag (gtag.js) - Google Analytics