有谁使用过阿里云oss的吗?多文件多图时怎么上传

JavaScript016

有谁使用过阿里云oss的吗?多文件多图时怎么上传,第1张

前段时间正好做个项目,就是用的oss,普通上传和断点续传,代码贴出来,看是不是你需要的public class OssManage {public static String ACCESS_KEY_ID = nullpublic static String ACCESS_KEY_SECRET = nullpublic static String ENDPOINT = nullpublic static String BUCKETNAME = nullpublic static String BUCKETNAME_VIDEO = nullpublic static String OUT_OF_DATE = nullprivate OSSClient client = nullprivate ObjectMetadata meta = nullstatic{try {ACCESS_KEY_ID = SysConst.getProperty("OSS_ACCESS_KEY_ID")ACCESS_KEY_SECRET = SysConst.getProperty("OSS_ACCESS_KEY_SECRET")ENDPOINT = SysConst.getProperty("OSS_ENDPOINT")BUCKETNAME = SysConst.getProperty("OSS_BUCKETNAME")BUCKETNAME_VIDEO = SysConst.getProperty("OSS_BUCKETNAME_VIDEO")OUT_OF_DATE = SysConst.getProperty("OSS_OUT_OF_DATE")} catch (java.lang.Exception e) {e.printStackTrace()}}public void init(){ // 初始化一个OSSClientclient = new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET) meta = new ObjectMetadata()}/** * @Description: 上传文件到OSS文件服务器 * @param content 文件流 * @param key上传为OSS文件服务器的唯一标识 * @param mimeType 文档类型 * @throws Exception * @ReturnType:String OSSObject的ETag值。*/public String uploadFile(InputStream content,String key,String mimeType) throws Exception{//进行初始化init() // 必须设置ContentLengthmeta.setContentType(mimeType) // 上传Object.LogUtil.printConsoleLog("*****************上传图片到oss服务器开始*****************" + key) PutObjectResult result = client.putObject(BUCKETNAME, key, content, meta) LogUtil.printConsoleLog("*****************上传图片到oss服务器结束*****************" + key) return result.getETag()}/** * @Description: 根据key获取oss服务器上的图片地址 * @param key * @return * @ReturnType:String*/public String getImgURl(String key){init()Date expires = new Date (new Date().getTime() + Integer.parseInt(OUT_OF_DATE))// 30 minute to expireGeneratePresignedUrlRequest generatePresignedUrlRequest if(key.startsWith("msplatform")){generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key)}else {generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME_VIDEO, key)}generatePresignedUrlRequest.setExpiration(expires)URL url = client.generatePresignedUrl(generatePresignedUrlRequest)return url.toString()}/** * @Description:根据key获取oss服务器上的ipa文件地址 * @param key * @return * @ReturnType:String */public String getIpaURl(String key){init()Date expires = new Date(new Date().getTime()+ 10*365*24*3600*1000)GeneratePresignedUrlRequest generatePresignedUrlRequest if(key.startsWith("msplatform")){generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key)}else {generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME_VIDEO, key)}generatePresignedUrlRequest.setExpiration(expires)URL url = client.generatePresignedUrl(generatePresignedUrlRequest)return url.toString()}/** * @Description: 根据key获取oss服务器上的图片地址 * @param key * @return * @ReturnType:String*/public InputStream getObject(String key){init()OSSObject object = nullif(key.startsWith("msplatform")){object= client.getObject(BUCKETNAME, key)}else{object= client.getObject(BUCKETNAME_VIDEO, key)}object.getObjectMetadata().getContentType()// 获取Object的输入流InputStream objectContent = object.getObjectContent()return objectContent}/** * @Description:删除文件 * @param key OSS文件服务器上文件的唯一标识 * @ReturnType:void*/public void deleteFile(String key){init()client.deleteObject(BUCKETNAME, key)}/** * @Description: 断点上传文件到OSS文件服务器 * @param content 文件流 * @param key上传为OSS文件服务器的唯一标识 * @param position 位置*/public String appendObjectFile(InputStream content,String key,int position,String mimeType) throws Exception{ //进行初始化init() // 必须设置ContentLengthmeta.setContentLength(position) meta.setContentType(mimeType) meta.setCacheControl("no-cache") meta.setContentEncoding("utf-8") // 上传LogUtil.printConsoleLog("*****************断点上传图片到oss服务器开始*****************" + key) AppendObjectRequest appendObjectRequest = new AppendObjectRequest(BUCKETNAME, key, content, meta) appendObjectRequest.setPosition(Long.valueOf(position)) AppendObjectResult appendObjectResult =client.appendObject(appendObjectRequest) LogUtil.printConsoleLog("*****************断点上传图片到oss服务器结束*****************" + key) return appendObjectResult.getNextPosition().toString()}public static void main(String[] args) {OssManage ossManage = new OssManage()}}

如果你直接使用 javascript 将阿里云的accessId、accessKey写在页面上是不安全的,你可以使用后台存储这些敏感的信息,官网有相关的SDK ,你可以选择你常用的。

我使用的Java

流程:首先先访问你的后台获取到相关的凭证,将凭证携带发送到你的OSS,如果你要调用回调函数,在你的后台需要开启回调函数功能,

在后台编写你的回调函数,将回调函数凭证信息返回给前端,前端使用回调函数凭证访问OSS,就可以获取到回调函数信息。

目前刚用Joplin没多久,然后发现这个软件的同步操作默认是用dropbox的,但我又没用过dropbox,然后网上好像说这个用起来还有些限制之类的,然后常用的百度网盘之类的又不支持Joplin的同步,后面在网上看到一篇 Joplin使用腾讯云对象存储(COS)进行同步 的文章,然后想到落灰很久的阿里云,上去自己捣鼓了一下,发现也是可以用阿里云的对象存储来做同步的,具体操作还看了下 这篇文章 阿里云oss对象存储访问的使用

具体的一些介绍和收费情况可以自己上官网去看一下,我是买了个资源包然后好像是可以抵扣费用之类的,反正看着挺便宜的,其实具体是怎么计费的也不是很清楚

创建完后,就会有一条Bucket记录了

创建完后就能看到创建的子账号了,然后我们需要进入用户信息界面,创建AccessKey,这个到时候需要填到joplin的同步设置里面,创建的时候会弹框现实AccessKey和AccessKey Secret,记得保存好AccessKey Secret,不然后面只能重新创建了

创建好AccessKey后 ,就需要对Buccket进行设置,让刚刚创建的子账号能操作Buccket

我目前用的joplin是2.7.13版本,在joplin的“工具”菜单下拉选项中,有个“选项”菜单,点击后,就进入下面页面。其中同步目标选择 S3 (Beta), 存储桶名称就填创建的Bucket的名称,然后下面是S3 URL和S3地区两个选项,需要根据你创建Bucket时选择的地区,然后去 对象存储文档 中的“访问域名和数据中心”内容里面找你选择的地区,就能看到对应的内容了。然后S3访问密匙就是刚刚创建的用户AccessKey,S3密匙就是 AccessKey Secret,都填上后检查同步配置按钮,成功的话就算是配置好了