阿里云oss下载(阿里云oss zip)
本文目录一览:
- 1、商城图片更换为oss
- 2、如何快速安装OSSFTP工具?阿里云OSS FTP安装图文详细教程
- 3、阿里云oss对象存储 什么意思
- 4、app安装包放oss下载扣费吗
- 5、vueoss上穿进度显示当前下载网速
- 6、通过java如何获取到上传阿里云OSS的文件的下图的下载文件地址,
商城图片更换为oss
在网站未接入阿里云OSS储存时,我们编写文章上传图片都是上传到服务器本地的。文章量少还好,一旦文章量大了,图片附件也会非常大,定期备份网站,备份包就很大。如果你使用的ZBlog PHP建站,想要采用阿里云OSS储存图片,则可以参考文章《ZBlog PHP插件阿里云OSS - Free 文章附件图片自动上传》使用插件即可。但是今天要说的是,如果以前是使用的本地图片,现在接入了阿里云OSS图片储存,要如何将以前的图片上传到阿里云OSS中,并且在文章中使用该图片。想知道话,就继续往下看吧。
二、准备
1、ossbrowser浏览器 软件(阿里云官方提供的OSS浏览器)
下载地址:
2、Navicat Premium 12 数据库连接工具
下载地址:
三、声明
操作不当可能会造成文件丢失或者图片显示不出来,建议事先备份网站和数据库
四、开始
1、获取网站附件上传路径,可以直接打开远程服务器,也可以使用其他工具

2、打开OSS Browser工具,连接上你的空间

3、参考第一步骤中的路径,在OSS中创建相同的目录

4、将第一步骤中的图片,拖拽上传到OSS新建的目录下
5、打开Navicat连接工具,连接到网站数据库

6、获取OSS文件的访问路径
以本站为例,使用的 也可使用OSS的外网访问地址,具体可从阿里云OSS控制台中获取
或者参考文章
7、执行sql 其中第二个参数,替换为对应的访问地址即可
 SQL
update `zbp_post`
set log_Content=
REPLACE(log_Content,'',''),
log_Meta=
REPLACE(log_Meta,'','')

8、查看文章,图片正常访问,地址已替换

9、接下来就可以删除upload下的图片内容了,至此大功告成
如何快速安装OSSFTP工具?阿里云OSS FTP安装图文详细教程
OSSFTP工具是一个特殊FTPserver,它接收普通FTP请求后,将对文件、文件夹的操作映射为对OSS的操作,从而使得您可以基于FTP协议来管理存储在OSS上的文件。
注意生产环境请使用osssdk,OSSFTP工具主要面向个人用户使用。
主要特性
跨平台:
无论是Windows、Linux还是Mac,无论是32位还是64位操作系统,无论是图形界面还是命令行都可以运行。
免安装:
解压后可直接运行。
免设置:
无需设置即可运行。
透明化:
FTP工具是python写的,您可以看到完整的源码,我们稍后也会开源到Github。
主要功能
支持文件和文件夹的上传、下载、删除等操作。
通过Multipart方式,分片上传大文件。
支持大部分FTP指令,可以满足日常FTP的使用需求。
注意
1.目前在1.0版本中,考虑到安装部署的简便,OSSFTP工具没有支持TLS加密。由于FTP协议是明文传输的,
为了防止您的密码泄漏,建议将FTPserver和client运行在同一台机器上,通过127.0.0.1:port的方式来访问。
2.不支持rename和move操作。
3.安装包解压后的路径不要含有中文。
4.FTPserver的管理控制页面在低版本的IE中可能打不开。
5.FTPserver支持的Python版本:Python2.6,Python2.7。
下载
由于Windows不会默认安装Python2.7,所以安装包中包含了Python2.7,免去您python安装配置的麻烦,解压即可使用。
由于Linux/Mac系统默认会安装Python2.7或Python2.6,所以安装包中不再包含可执行的python,只包含了相关依赖库。
运行
首先解压之前下载的文件,然后根据环境情况选择不同的运行方式。
Windows:双击运行start.vbs即可
Linux:打开终端,运行 i.$bashstart.sh
Mac:双击start.command,或者在终端运行 i.$bashstart.command
上述步骤会启动一个FTPserver,默认监听在127.0.0.1的2048端口。同时,为了方便您对FTPserver的状态进行管控,还会启动一个web服务器,监听在127.0.0.1的8192端口。如果您的系统有图形界面,还会自动打开控制页面,
如下所示:
大部分情况不要任何配置,就可以运行一个FTPserver了,如果想对FTPserver进行配置,请注意需要重启才能生效。
连接到FTPserver推荐使用FileZilla客户端去连接FTPserver。
下载安装后,按如下方式连接即可:
主机:127.0.0.1
登录类型:正常
用户:access_key_id/bucket_name
密码:access_key_secret
注意:
用户中,/是必须的,如用户
tSxyiUM3NKswPMEp/test-hz-jh-002。
-access_key_id和access_key_secret的获取
高级使用
通过控制页面管理FTPserver
修改监听地址
如果需要通过网络来访问FTPserver,那么需要修改监听地址,因为默认的监听地址127.0.0.1只允许来自本地的访问。可以修改成内网ip或公网ip。
修改监听端口
修改FTPserver监听的端口,建议端口大于1024,因为监听1024以下的端口时需要管理员权限.
修改日志等级
设置FTPserver的日志级别。FTPserver的日志会输出到data/ossftp/目录下,可以通过控制页面的日志按钮在线查看。默认的日志界别为INFO,打印的日志信息较少,如果需要更详细的日志信息,可以修改为DEBUG模式。如果希望减少日志的输出,可以设置级别为WARNING或ERROR等。
设置Bucketendpoints
FTPserver默认会探索bucket的所属location信息,随后将请求发到对应的region(如oss-cn-hangzhou.aliyuncs.com或oss-cn-beijing.aliyuncs.com),FTPserver会优先尝试内网访问oss。如果您设置了bucketendpoints,如设置为test-bucket-a.oss-cn-hangzhou.aliyuncs.com,那么当访问test-bucket-a时,就会使用oss-cn-hangzhou.aliyuncs.com域名。
注意
所有修改都需要重启才能生效。
上述的所有修改其实都是修改的ftp根目录下的config.json,所以您可以直接修改该文件。
直接启动FTPserver(Linux/Mac)
可以直接启动ossftp目录下的ftpserver.py,免去web_server的开销。
1.python ossftp/ftpserver.py
配置修改方式同上。
可能遇到的问题
如果连接FTPserver时,遇到以下错误:
有两种可能:
输入的access_key_id和access_key_secret有误。
解决 :请输入正确的信息后再重试。
所用的access_key信息为ram子账户的access_key,而子账户不具有Listbuckets权限。
解决 :当使用子账户访问时,请在控制页面中指定bucketendpoints,即告诉FTPserver某个bucket应该用什么endpoint来访问。同时,子账户也需要一些必须的权限,关于使用ram访问oss时的访问控制。
只读访问
OSSFTP工具需要的权限列表为ListObjects、GetObject、HeadObject。关于如何创建一个具有只读访问的ram子账户,请参考图文教程如何结合ram实现文件共享。
上传文件
如果允许ram子账户上传文件,还需要PutObject。
删除文件
如果允许ram子账户删除文件,还需要DeleteObject。
如果您在Linux下运行FTPserver,然后用FileZilla连接时遇到如下错误:
501 can't decode path (server filesystem encoding is ANSI_X3.4-1968)
一般是因为本地的中文编码有问题。在将要运行start.sh的终端中输入下面的命令,然后再重新启动即可。
1 .$ export LC_ALL=en_US.UTF-8; export LANG="en_US.UTF-8"; locale
阿里云oss对象存储 什么意思
oss 也叫对象存储,用来存放图片,css、视频等静态文件。可以作为网站、app等web应用的:附件服务器、头像服务器、图片服务器、下载服务器。
每家叫法不一样,阿里云叫oss,腾讯云叫cos,其实都是一个东西。老魏为此写过云服务器oss建站等多篇教程,看完有疑问可以问,在线了就回答。
app安装包放oss下载扣费吗
app安装包放oss下载扣费的。
因为阿里云OSS对象存储价格还是比较低廉的,用户可以通过购买OSS资源包的方式来购买。
vueoss上穿进度显示当前下载网速
阿里云OSS上传文件时,如何显示上传网速
业务场景
用户上传时,网速很慢,或者在上传大文件时,虽然有进度条,但是动的很慢,或者不明显,用户会产生困惑.
所以就产生了一个显示网速的需求点.
实现方式
Electron
因为我们的产品形态是Electron客户端,所以自然就想到了从Electron入手
但找过了几个对象:app net net-log
发现都没有直接拿到网速的地方
Node.js
找了process对象,这里面我找到了memoryUsage和cpuUsage方法,也没有找到网络相关的,最多就是一个查询网卡的,但也解决不了我的问题
JS手动实现
最终我是手动实现了这个功能,思路是将过去每一次上传的文件,均摊到每ms中,再遍历求和得出1000ms中传输的总字节数.因为上传本身是异步,多线程并行的,所以只计算单个得到结果很明显不准确.
具体代码
声明记录传输信息的对象
let map = {}; //定义一个map对象,用来存放每一ms的数据量, key: 毫秒 value: 字节数,示例: 1578648506560: 50
let map_max_key = 0;// 当前map中最大的key
const change = async (i, value) = {
map[i] = value;
map_max_key = i
};
1
2
3
4
5
6
1
2
3
4
5
6
上传阿里云OSS的方法
参考了阿里云OSS的GitHub文档OSS.README.md中的分片上传部分的参数说明(progress部分)
/**
* 上传文件至阿里云
* @param _objName
* @param _file
* @returns 0-成功 1-失败 2-取消
*/
async function uploadFile(_objName, _file) {
let logFlag = false;//是否进行日志记录的标记位
//main.log,main.old.log,task.log这3个文件本身就是
if (_file.indexOf('main.log') === -1 _file.indexOf('main.old.log') === -1 _file.indexOf('task.log') === -1) {
logFlag = true;
}
/**
* 处理分片上传的参数
* @param res 上传的返回信息
* @param partSize 分片的大小
*/
function handle_network_speed(res, partSize) {
const spend_time = res.rt;//单位ms
const end_time = new Date(res.headers.date).getTime();
const start_time = end_time - spend_time;
let network_speed = parseInt(partSize / spend_time); // 每ms中上传的字节(b)数
if (network_speed === 0) {
// nothing to do
} else {
handle_network_speed_change(start_time, end_time, network_speed);
}
}
//start upload
try {
if (fs.readFileSync(_file).length === 0) {
return false;
}
const fileLength = fs.readFileSync(_file).length;
const partSize = 1024 * 1024;
const result = await OSSCLIENT.multipartUpload(_objName, _file, {
parallel: 4, // 并发上传的分片个数
partSize: partSize, // 每个part的大小,单位为b,此处设置为1MB
timeout: 1000 * 60 * 10, //设置超时时间单位毫秒,此处设置为60秒
progress: (p, cpt, res) = {
if (cpt cpt.doneParts cpt.doneParts.length 0 logFlag) {
handle_network_speed(res, partSize);
}
}
});
if (result.res.status === 200) {
// 上传成功
if (fileLength = partSize logFlag) {
handle_network_speed(result.res, fileLength);
}
try {
if (logFlag) {
log.info(result);
}
} catch (e) {
}
console.log('上传结束');
return 0
} else {
// 失败
try {
if (logFlag) {
log.error(result);
}
} catch (e) {
}
return 1;
}
} catch (err) {
if (OSSCLIENT.isCancel()) {
// 取消上传
try {
if (logFlag) {
log.info("取消上传-" + _file);
}
} catch (e) {
}
return 2
} else if (err.code === 'ConnectionTimeoutError') {
// 连接超时
try {
if (logFlag) {
log.log("连接超时!!!");
}
} catch (e) {
}
} else {
try {
if (logFlag) {
log.error(err);
}
} catch (e) {
}
}
return 1;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/**
* 处理上传对象
* @param start_time 开始时间
* @param end_time 结束时间
* @param network_speed 平均每ms传输的字节数
* @returns {Promisevoid}
*/
const handle_network_speed_change = async (start_time, end_time, network_speed) = {
// 如果超过10秒没有传输数据,则清空map
if ((start_time - map_max_key) = 10000) {
map = {}
}
for (let i = start_time; i = end_time; i++) {
const value = await map[i];
if (value) {
await change(i, value + network_speed);
} else {
await change(i, network_speed);
}
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
定义一个定时器,1s执行一次,用来刷新网速显示
/**
* 定义一个1s的定时器
* 每次取当前时间前1s内发生的数据传输记录,计算上传速度
*/
setInterval(() = {
const now = new Date().getTime();
// 如果超过10秒没有传输数据,则清空map
if ((now - map_max_key) = 10000) {
map = {}
}
const end_time = now - 1000;
const start_time = end_time - 1000;
let totalSize = 0;
let totalCount = 0;
for (let i = start_time; i = end_time; i++) {
if (map[i]) {
totalCount++;
totalSize += map[i]
}
}
let network_speed = totalSize / 1024 / totalCount * 1000;
if (!network_speed) {
network_speed = '0.00 Kb/s'
} else if (network_speed 1024) {
network_speed = network_speed.toFixed(2) + ' Kb/s'
} else {
network_speed = (network_speed / 1024);
network_speed = network_speed.toFixed(2) + ' Mb/s'
}
mainWindow.webContents.send('handle_network_speed_change', network_speed);
console.log(184, Object.keys(map).length)
}, 1000);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
最后,在渲染进程中监听网速变化
通过java如何获取到上传阿里云OSS的文件的下图的下载文件地址,
具体的可以查看这篇文章:网页链接
public static String uploadFile(File file){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = format.format(new Date());
if(null == file){
return null;
}
OSSClient ossClient = new OSSClient(endpoint_im,accessKeyId_im,accessKeySecret_im);
try {
//容器不存在,就创建
if(! ossClient.doesBucketExist(bucket_im)){
ossClient.createBucket(bucket_im);
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucket_im);
createBucketRequest.setCannedACL(CannedAccessControlList.Default);
ossClient.createBucket(createBucketRequest);
}
//创建文件路径
String fileUrl = dateStr + "/" + new Date().getTime()+"."+fileType;
//上传文件
PutObjectResult result = ossClient.putObject(new PutObjectRequest(bucket_im, fileUrl, file));
//设置权限 这里是私有权限读写
// ossClient.setBucketAcl(bucketName,CannedAccessControlList.Default);
if(null != result){
return fileBucketprefix+"/"+fileUrl;
}
}catch (OSSException oe){
logger.error(oe.getMessage());
}catch (ClientException ce){
logger.error(ce.getMessage());
}finally {
//关闭
ossClient.shutdown();
}
return null;
}
发表评论
暂时没有评论,来抢沙发吧~