在实际的开发中我们经常需要将图片上传到第三方,因为如果把图片全都存放在项目路径下,会导致项目越来越臃肿,这里我以七牛云为例,讲解一下Java如何将图片上传到七牛云。
首先,我们要先导入pom依赖:
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.1.1</version>
</dependency>
然后就是Java :
这里需要主义的地方就是域名链接,如果域名链接部队的话是无法上传到你的云空间的,点击这里复制你所在地区的域名链接
import java.io.File;
import java.io.FileInputStream;
import com.qiniu.util.*;
import okhttp3.*;
public class put64 {
String ak = "";
String sk = ""; // 密钥配置
Auth auth = Auth.create(ak, sk); // TODO Auto-generated constructor stub
String bucketname = ""; //空间名
String key = ""; //上传的图片名
public String getUpToken() {
return auth.uploadToken(bucketname, null, 3600, new StringMap().put("insertOnly", 1));
}
public void put64image() throws Exception {
String file = "D:\\E\\3a9384fd577f6a9a0acdee0a3b79fb2e.jpg";//图片路径
//这里改成你的图片存储的路径
FileInputStream fis = null;
int l = (int) (new File(file).length());
byte[] src = new byte[l];
fis = new FileInputStream(new File(file));
fis.read(src);
String file64 = Base64.encodeToString(src, 0);
String url = "http://up-z1.qiniup.com/putb64/" + l+"/key/"+ UrlSafeBase64.encodeToString(key);
//http://up-z1.qiniup.com是华北地区的域名链接
RequestBody rb = RequestBody.create(null, file64);
Request request = new Request.Builder().
url(url).
addHeader("Content-Type", "application/octet-stream")
.addHeader("Authorization", "UpToken " + getUpToken())
.post(rb).build();
System.out.println(request.headers());
OkHttpClient client = new OkHttpClient();
okhttp3.Response response = client.newCall(request).execute();
System.out.println(response);
}
public static void main(String[] args) throws Exception {
new put64().put64image();
}
}
密钥配置在你七牛云个人中心里的密钥管理里面就可以查看