OSS上传文件

OSS上传文件,第1张

阿里云OSS上传文件 ,我这是用的老版本的获取OSSClient的方式,因为我们后台没有做OSS的接入,现在新版本的需要后台接入OSS

这里的token是需要后台返回的,而且每一次上传文件都需要调用一次后台返回再调用上传的OSS接口,我觉得太麻烦了,还是用的以前的版本的初始化方式,但是其实这种方式是不太安全的,需要安全的话还是用新版本的方式会比较好

前段时间正好做个项目,就是用的oss,普通上传和断点续传,代码贴出来,看是不是你需要的

public class OssManage {

public static  String ACCESS_KEY_ID  = null;

public static  String  ACCESS_KEY_SECRET = null;

public static  String  ENDPOINT = null;

public static  String  BUCKETNAME = null;

public static  String  BUCKETNAME_VIDEO = null;

public static String OUT_OF_DATE = null;

private  OSSClient client  = null;

private  ObjectMetadata meta = null;

static{

try {

ACCESS_KEY_ID  = SysConstgetProperty("OSS_ACCESS_KEY_ID");

ACCESS_KEY_SECRET = SysConstgetProperty("OSS_ACCESS_KEY_SECRET");

ENDPOINT = SysConstgetProperty("OSS_ENDPOINT");

 BUCKETNAME = SysConstgetProperty("OSS_BUCKETNAME");

 BUCKETNAME_VIDEO = SysConstgetProperty("OSS_BUCKETNAME_VIDEO");

 OUT_OF_DATE = SysConstgetProperty("OSS_OUT_OF_DATE");

} catch (javalangException e) {

eprintStackTrace();

}

}

public void init(){

 // 初始化一个OSSClient

        client = 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();

        // 必须设置ContentLength

        metasetContentType(mimeType);

        // 上传Object

        LogUtilprintConsoleLog("上传到oss服务器开始" + key);

        PutObjectResult result = clientputObject(BUCKETNAME, key, content, meta);

        LogUtilprintConsoleLog("上传到oss服务器结束" + key);

        return resultgetETag();

}

/

  @Description: 根据key获取oss服务器上的地址

  @param key

  @return 

  @ReturnType:String

/

public String getImgURl(String key){

init();

Date expires = new Date (new Date()getTime() + IntegerparseInt(OUT_OF_DATE)); // 30 minute to expire

GeneratePresignedUrlRequest generatePresignedUrlRequest ;

if(keystartsWith("msplatform")){

generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key);

}else {

generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME_VIDEO, key);

}

generatePresignedUrlRequestsetExpiration(expires);

URL url = clientgeneratePresignedUrl(generatePresignedUrlRequest);

return urltoString();

}

/

  @Description:根据key获取oss服务器上的ipa文件地址

  @param key

  @return 

  @ReturnType:String

 /

public String getIpaURl(String key){

init();

Date expires = new Date(new Date()getTime()+ 103652436001000);

GeneratePresignedUrlRequest generatePresignedUrlRequest ;

if(keystartsWith("msplatform")){

generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key);

}else {

generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME_VIDEO, key);

}

generatePresignedUrlRequestsetExpiration(expires);

URL url = clientgeneratePresignedUrl(generatePresignedUrlRequest);

return urltoString();

}

/

  @Description: 根据key获取oss服务器上的地址

  @param key

  @return 

  @ReturnType:String

/

public InputStream  getObject(String key){

init();

OSSObject object = null;

if(keystartsWith("msplatform")){

object= clientgetObject(BUCKETNAME, key);

}else{

object= clientgetObject(BUCKETNAME_VIDEO, key);

}

objectgetObjectMetadata()getContentType();

// 获取Object的输入流

InputStream objectContent = objectgetObjectContent();

return objectContent;

}

/

  @Description:删除文件

  @param key  OSS文件服务器上文件的唯一标识

  @ReturnType:void

/

public void deleteFile(String key){

init();

clientdeleteObject(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();

        // 必须设置ContentLength

        metasetContentLength(position);

        metasetContentType(mimeType);

        metasetCacheControl("no-cache");

        metasetContentEncoding("utf-8");

        // 上传

        LogUtilprintConsoleLog("断点上传到oss服务器开始" + key);

        AppendObjectRequest appendObjectRequest = new AppendObjectRequest(BUCKETNAME, key, content, meta);

        appendObjectRequestsetPosition(LongvalueOf(position));

        AppendObjectResult appendObjectResult =clientappendObject(appendObjectRequest);

        LogUtilprintConsoleLog("断点上传到oss服务器结束" + key);

        return appendObjectResultgetNextPosition()toString();

}

public static void main(String[] args) {

OssManage ossManage = new OssManage();

}

}

阿里云oss后台管理配置,这里只是前端的 *** 作,先获取后端接口返回的数据:

AccessKeyId, AccessKeySecret,SecurityToken,bucket,regionId,object_path,domain

bucket: OSS存储空间名称

domain: 域名地址

object_path: 保存至oss的文件路径

微信小程序配置域名白名单

[官方文档地址]( >

安装

将以下内容增加到 composerjson:

require: {

"johnlui/aliyun-oss": "dev-master"

}

然后运行 composer update

使用

use JohnLui\AliyunOSS\AliyunOSS;

// 构建 OSSClient 对象

// 三个参数:服务器地址、阿里云提供的AccessKeyId、AccessKeySecret

$oss = AliyunOSS::boot('>

使用第三方的阿里云OOS来当文件服务器使用,稳定性相对来说比较高,容灾也方便。

官方参考地址: >

d性公网IP是可以独立申请的公网IP地址,只能绑定在同一地域内虚拟专有网络类型的ECS实例,支持动态绑定和解绑。

阿里云云服务器(Elastic Compute Service, ECS)是一种处理能力可d性伸缩的计算服务,其管理方式比物理服务器更简单高效。 阿里云云服务器帮助您快速构建更稳定、安全的应用,降低开发运维的难度和整体IT成本,使您能够更专注于核心业务创新。

1、产品功能

对云服务器的 *** 作系统(Linux和Windows)拥有完全控制权及基本云管理 *** 作,如启动、停止、重启、重置、修改密码以及更换 *** 作系统等;对云服务器的磁盘数据生成快照,用快照恢复磁盘数据;针对已经安装了应用软件包的云服务器生成自定义镜像,并采用镜像来启动其他云服务器;服务器通过安全组功能对一台或多台云服务器设定访问权限。

2、服务器PING值

PING测试在一定程度上可以代表服务器的宽带速度。 使用站长工具提供的Ping服务,来测试各个地区的速度,以便做一个直观的了解。左图为阿里云服务器PING值测试结果,右图为百度PING值测试结果。从ping测试结果可以看浙江地区的最快,这是由于机房在上海的原因,福建移动稍微慢一点。

3、应用场景及案例

在云服务器上安装各种应用软件,譬如Apache/Nginx、企业ERP/CRM管理软件、游戏软件、教育软件等,负载均衡服务SLB和多个云服务器连接成应用服务集群, 后端数据库采用高性能的关系型数据库服务RDS,此结构下应用系统的服务能力可以水平扩展,云服务器与开放存储服务OSS, 开放结构化数据服务OTS结合使用以提供更大的存储和访问能力。

4、如何使用

登录阿里云管理控制台进行云服务器的基本管理,如修改密码、重启、更换 *** 作系统等,您还可以通过API的方式来管理云服务器,远程登录到云服务器后运行程序或脚本,Linux系统可以使用SSH,Windows系统可以使用远程桌面登录,登录后的管理方式和物理服务器没有差别,通过管理控制台查看云服务器的基本运行性能指标(CPU利用率、网络带宽、磁盘读写速率等),强烈建议您通过云监控部署更多的性能监控指标。

5、 *** 作禁忌

云服务器是部署在物理机上的,底层物理机性能出现异常或者其他原因都会导致物理机宕机,当检测到云服务器所在的物理机机发生故障,系统会启动保护性迁移,将您的服务器迁移到性能正常的宿主机上 ,一旦发生宕机迁移,您的服务器就会被重启,如果您希望您的服务器重启以后应用服务器自动恢复,需要您把应用程序设置成开机自动启动,如果应用服务连接的数据库,需要在程序中设置成自动重连机制。

最近公司有新的需求,需要将文件上传到阿里云OSS,目前项目中的文件主要是存储到自己的服务器,这样很容易受服务器带宽、硬件的影响,加上服务器配置不高,应用服务很容易垮掉。之前也用过OSS,但是上传文件都是比较小的10MB以内的文件,采用的是生成数据流的方式。这种情况已经无法满足现在的应用场景,就又熟悉了一下SDK文档,主要的实现方式有:

1、 上传慢。先上传到应用服务器,再上传到OSS,网络传送多了一倍。如果数据直传到OSS,不走应用服务器,速度将大大提升,而且OSS是采用BGP带宽,能保证各地各运营商的速度。

2、 扩展性不好。如果后续用户多了,应用服务器会成为瓶颈。

3、 费用高。由于OSS上传流量是免费的。如果数据直传到OSS,不走应用服务器,那么将能省下几台应用服务器。

>

以上就是关于OSS上传文件全部的内容,包括:OSS上传文件、怎么用javaweb上传文件到阿里云OSS、微信小程序环境下将文件上传到阿里云OSS等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10129200.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存