赞
踩
本章节介绍本地文件上传和阿里云OSS上传。
package org.example.springboot3.bigevent.controller;
import org.example.springboot3.bigevent.entity.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
/**
* Create by zjg on 2024/5/30
*/
@RequestMapping("/file/")
@RestController
public class FileUploadController {
@RequestMapping("upload")
public Result upload(MultipartFile file) throws IOException {
String filePath="E:\\opt\\file\\upload\\";
String filename = file.getOriginalFilename();
String pathname=filePath+ UUID.randomUUID()+filename.substring(filename.lastIndexOf("."));
file.transferTo(new File(pathname));
return Result.success("文件上传成功");
}
}
使用Java 1.7.0及以上版本。
您可以通过命令java -version查看Java版本。
在Maven工程中使用OSS Java SDK,只需在pom.xml中加入相应依赖即可。在中加入如下内容:
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
如果使用的是Java 9及以上的版本,则需要添加JAXB相关依赖。添加JAXB相关依赖示例代码如下:
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
</dependency>
配置RAM用户的访问密钥:如果您需要长期访问您的OSS,您可以通过RAM用户的访问密钥的方式访问您的OSS。
如何获取RAM用户的访问密钥,请参见创建RAM用户的AccessKey。
sudo vim /etc/profile
export OSS_ACCESS_KEY_ID=LTAI****
export OSS_ACCESS_KEY_SECRET=IrVTNZNy****
ESC
键退出编辑模式,输入:wq
,然后按Enter
键保存并退出文件source /etc/profile
echo $OSS_ACCESS_KEY_ID
echo $OSS_ACCESS_KEY_SECRET
成功返回示例如下:
LTAI****
IrVTNZNy****
// 使用环境变量中获取的RAM用户的访问密钥配置访问凭证。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
package org.example.springboot3.bigevent.utils;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import java.io.InputStream;
public class OssUtil {
private static final String ENDPOINT = "https://oss-cn-beijing.aliyuncs.com";
private static final String BUCKET_NAME = "oss";
//上传文件,返回文件的公网访问地址
public static String uploadFile(String objectName, InputStream inputStream) throws com.aliyuncs.exceptions.ClientException {
// 使用环境变量中获取的RAM用户的访问密钥配置访问凭证。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(ENDPOINT,credentialsProvider);
//公网访问地址
String url = "";
try {
// 创建存储空间。
ossClient.createBucket(BUCKET_NAME);
ossClient.putObject(BUCKET_NAME, objectName, inputStream);
url = "https://"+BUCKET_NAME+"."+ENDPOINT.substring(ENDPOINT.lastIndexOf("/")+1)+"/"+objectName;
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return url;
}
}
package org.example.springboot3.bigevent.controller;
import com.aliyuncs.exceptions.ClientException;
import org.example.springboot3.bigevent.entity.Result;
import org.example.springboot3.bigevent.utils.OssUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
/**
* Create by zjg on 2024/5/30
*/
@RequestMapping("/file/")
@RestController
public class FileUploadController {
@RequestMapping("oss/upload")
public Result<String> ossUpload(MultipartFile file) throws IOException, ClientException {
String filename = file.getOriginalFilename();
String pathname= UUID.randomUUID()+filename.substring(filename.lastIndexOf("."));
String url = OssUtil.uploadFile(pathname, file.getInputStream());
return Result.success("文件上传成功",url);
}
}
该方案仅供参考,更多内容请参考官方网站
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。