
阿里云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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)