import com.qiniu.storage.Region;
import org.springframework.web.multipart.MultipartFile;
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import java.io.*;
public class FileUtils {
/**
* Key
*/
private static final String ACCESS_KEY = "Ak";
/**
* 祕鑰
*/
private static final String SECRET_KEY = "Sk";
/**
* 存儲桶
*/
private static final String BUCKET = "空間";
private static final String BASE_URL = "http://url/";
/**
* 上傳管理
*/
private static UploadManager uploadManager;
private FileUtils() {
//構造一個帶指定 Region 對象的配置類 注意地區華北華東等....
Configuration config = new Configuration(Region.region1());
uploadManager = new UploadManager(config);
}
private static UploadManager getInstance() {
if (uploadManager == null) {
new FileUtils();
}
return uploadManager;
}
/**
* 生成上傳憑證Token
*
* @return
*/
public static String getToken() {
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
String upToken = auth.uploadToken(BUCKET);
System.out.println(upToken);
return upToken;
}
public static String upLoad(MultipartFile file) {
// 默認不指定key的情況下,以文件內容的hash值作爲文件名
String key = null;
String url="";
try {
InputStream inputStream = file.getInputStream();
// byte[] byteData = IOUtils.toByteArray(inputStream);//把流轉字節數組
Response response = getInstance().put(inputStream, key, getToken(), null, null);
// Response response = getInstance().put(byteData, key, getToken());
//解析上傳成功的結果
try {
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println(putRet.key);
System.out.println(putRet.hash);
url = BASE_URL+putRet.hash;
} catch (QiniuException e) {
Response r = e.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
} catch (IOException e) {
e.printStackTrace();
}
return url;
}
}
/** 多文件上傳,接收並返回某值
public Result fileS(HttpServletRequest request){
List successUploadFiles=new ArrayList(); //返回上傳成功的文件名list給前端
List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file"); //創建一個list接受前端發送的文件
List<String> list=new ArrayList<>();
for (MultipartFile m:files) { //用foreach處理list列表中的file
list.add(FileUtils.upLoad(m));
}
return Result.ok("filePath",list);//返回list
}
/
上傳七牛雲工具
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.