阿里云对象存储服务(Object Storage Service,简称OSS)是阿里云提供的一种稳定、安全、易用的云存储服务。本文将详细介绍如何使用阿里云OSS,并通过一个实例来演示如何上传、下载和删除文件。
一、创建AccessKey
- 登录阿里云控制台,点击右上角的用户名,选择“AccessKey管理”。
- 点击“创建AccessKey”,输入AccessKey名称和描述,然后点击“确定”。
- 创建成功后,系统会生成两个AccessKey ID和AccessKey Secret,请妥善保管。
二、安装阿里云SDK
- 使用npm安装阿里云OSS SDK:
npm install ali-oss
- 在项目中引入阿里云OSS SDK:
const OSS = require('ali-oss');
三、配置阿里云OSS客户端
- 设置AccessKey ID和AccessKey Secret:
const client = new OSS({accessKeyId: 'your_access_key_id', accessKeySecret: 'your_access_key_secret', region: 'your_region'});
- 设置Bucket名称:
const bucketName = 'your_bucket_name';
- 设置Endpoint:
const endpoint = 'your_endpoint';
- 创建Bucket实例:
const ossClient = new OSS({...clientConfig, bucket: bucketName});
四、上传文件
- 生成上传凭证:
const policyBase64 = await client.signatureUrl(
e n d p o i n t / {endpoint}/ endpoint/{bucketName}/${fileName}, {expiration: 3600});
- 获取上传凭证URL:
const uploadUrl = policyBase64;
- 使用HTML表单或第三方库(如axios)发送POST请求,将文件上传到阿里云OSS。
五、下载文件
- 生成下载凭证:
const policyBase64 = await client.signatureUrl(
e n d p o i n t / {endpoint}/ endpoint/{bucketName}/${fileName}, {expiration: 3600});
- 获取下载凭证URL:
const downloadUrl = policyBase64;
- 使用HTML表单或第三方库(如axios)发送GET请求,从阿里云OSS下载文件。
六、删除文件
- 生成删除凭证:
const policyBase64 = await client.signatureUrl(
e n d p o i n t / {endpoint}/ endpoint/{bucketName}/${fileName}, {expiration: 3600});
- 获取删除凭证URL:
const deleteUrl = policyBase64;
- 使用HTML表单或第三方库(如axios)发送DELETE请求,从阿里云OSS删除文件。
七、完整实例代码
const OSS = require('ali-oss');
const fs = require('fs');
const axios = require('axios');
const FormData = require('form-data');
// 配置阿里云OSS客户端
const clientConfig = {
accessKeyId: 'your_access_key_id',
accessKeySecret: 'your_access_key_secret',
region: 'your_region'
};
const bucketName = 'your_bucket_name';
const endpoint = 'your_endpoint';
const ossClient = new OSS({...clientConfig, bucket: bucketName});
// 上传文件
async function uploadFile() {
const fileName = 'test.txt'; // 文件名
const fileContent = fs.readFileSync(fileName); // 读取文件内容
const policyBase64 = await client.signatureUrl(`${endpoint}/${bucketName}/${fileName}`, {expiration: 3600}); // 生成上传凭证URL
const uploadUrl = policyBase64; // 获取上传凭证URL
// 使用HTML表单或第三方库(如axios)发送POST请求,将文件上传到阿里云OSS。
}
// 下载文件
async function downloadFile() {
const fileName = 'test.txt'; // 文件名
const policyBase64 = await client.signatureUrl(`${endpoint}/${bucketName}/${fileName}`, {expiration: 3600}); // 生成下载凭证URL
const downloadUrl = policyBase64; // 获取下载凭证URL
// 使用HTML表单或第三方库(如axios)发送GET请求,从阿里云OSS下载文件。
}
// 删除文件
async function deleteFile() {
const fileName = 'test.txt'; // 文件名
const policyBase64 = await client.signatureUrl(`${endpoint}/${bucketName}/${fileName}`, {expiration: 3600}); // 生成删除凭证URL
const deleteUrl = policyBase64; // 获取删除凭证URL
// 使用HTML表单或第三方库(如axios)发送DELETE请求,从阿里云OSS删除文件。
}
``
八、应用实例使用阿里云OSS制图床
1. 创建一个用于上传图片的Servlet。
```java
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/upload")
public class ImageUploadServlet extends HttpServlet {
private static final String ENDPOINT = "*** Provide your OSS endpoint ***";
private static final String ACCESS_KEY_ID = "*** Provide your Access Key ID ***";
private static final String ACCESS_KEY_SECRET = "*** Provide your Access Key Secret ***";
private static final String BUCKET_NAME = "*** Provide your Bucket Name ***";
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String imageUrl = req.getParameter("imageUrl");
String objectName = System.currentTimeMillis() + ".jpg";
OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, objectName, new URL(imageUrl));
ossClient.putObject(putObjectRequest);
ossClient.shutdown();
resp.getWriter().write("Image uploaded successfully! Object name: " + objectName);
}
}
- 在前端页面中,创建一个表单用于上传图片。
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="imageUrl" accept="image/*">
<button type="submit">Upload</button>
</form>
九、总结
通过以上步骤,我们已经成功地使用阿里云OSS制图床搭建了一个个人图片存储系统。用户可以将本地的图片上传到OSS上,然后在需要的地方引用这些图片。这种方式不仅可以节省存储空间,还可以提高访问速度。