linux 运行java程序 从零开始,在java中使用七牛云实现文件云存储(一)(3)

电脑杂谈  发布时间:2017-12-18 08:07:10  来源:网络整理

zone:每个大区对应一个zone对象,对应关系如下:

	 *    华东	Zone.zone0()
	 *    华北	Zone.zone1()
	 *    华南	Zone.zone2()
	 *    北美	Zone.zoneNa0()

upToken:getUploadCredential()生成的凭证

localFilePath:需要上传的文件本地路径,如果是Linux环境,使用类似"/home/qiniu/test.png";如果是Windows环境,使用类似"D:\\qiniu\\test.png",注意:字符串中不要有空格,笔者就被这个坑过。

linux编译运行java程序_linux cp命令_linux 运行java程序

返回值:DefaultPutRet对象,其中包含了已经上传文件的新文件名和文件hash值。

写个main()测试一下上边的上传方法:

	public static void main(String[] args) {
		fileUpload(Zone.zone0(),CredentialsManager.getUploadCredential(),"D:\\qiniu\\test.jpg");
	}
执行,打开七牛控制管理台->对象存储->你创建的空间名->内容管理,看看你的文件是不是传上去了!!

是不是很奇怪,我都还没有提供url,怎么就传上去了呢。没错了,七牛的SDK通过全局唯一的Bucket 直接拼接出了你空间对应的url,所以你只需要提供ak、sk和Bucket就可以上传文件了。

但是在实际开发中,这些只能上传文件还远远不够,下面我们介绍七牛 SDK的其他功能

生成文件下载链接。仅仅把文件上传上去当然不行了,我们还要想办法访问它,下边分别介绍公有空间和私有空间生成文件下载链接的方法。废话不多说,直接上代码:

	private static String accessKey = "你的AK";
	private static String secretKey = "你的SK";
	private static String bucket = "你的存储空间名";
	
	public static Auth getAuth() {
		return Auth.create(accessKey, secretKey);
	}
	
	/**
	 * 公有空间返回文件URL
	 * @param fileName
	 * @param domainOfBucket
	 * @return
	 */
	public static String publicFile(String fileName,String domainOfBucket) {
		String encodedFileName=null;
		try {
			encodedFileName = URLEncoder.encode(fileName, "utf-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String finalUrl = String.format("%s/%s", domainOfBucket, encodedFileName);
		System.out.println(finalUrl);
		return finalUrl;
	}
	
	/**
	 * 私有空间返回文件URL
	 * @param auth
	 * @param fileName
	 * @param domainOfBucket
	 * @param expireInSeconds
	 * @return
	 */
	public static String privateFile(Auth auth,String fileName,String domainOfBucket,long expireInSeconds) {
		String encodedFileName=null;
		try {
			encodedFileName = URLEncoder.encode(fileName, "utf-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String publicUrl = String.format("%s/%s", domainOfBucket, encodedFileName);
		String finalUrl = auth.privateDownloadUrl(publicUrl, expireInSeconds);
		System.out.println(finalUrl);
		return finalUrl;
	}
	
	public static void main(String[] args) {
		publicFile("文件名","你的domainOfBucket");
		//privateFile(CredentialsManager.getAuth(),"文件名","你的domainOfBucket",3600);
	}
说一下参数:fileName:没错,就是上传文件时,返回的DefaultPutRet对象中的key属性,也就是七牛控制管理台中看到的文件名。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-54170-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...