前端传一个多个图片给后端,后端接收图片后上传到OSS并且返回访问刚刚上传图片的URL,用Java语言怎么实现
时间: 2024-06-08 14:09:02 浏览: 154
java 多图片上传
实现这个功能需要用到Java的文件上传和OSS客户端的操作,具体步骤如下:
1. 前端使用表单上传多个文件,将文件发送到后端。
2. 后端接收到文件后,遍历文件列表,利用OSS客户端将文件上传到OSS,获取文件的URL。
3. 将URL返回给前端,前端可以通过URL访问刚刚上传的图片。
下面是Java代码示例:
```java
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@Controller
@RequestMapping("/upload")
public class UploadController {
// 设置OSS的访问域名
private static String endpoint = "yourOSSEndpoint";
// 设置OSS的accessKeyId和accessKeySecret
private static String accessKeyId = "yourAccessKeyId";
private static String accessKeySecret = "yourAccessKeySecret";
// 设置OSS的bucket名称
private static String bucketName = "yourBucketName";
// 处理文件上传请求
@PostMapping("/file")
public String handleFileUpload(@RequestParam("file") List<MultipartFile> files) {
// 创建OSS客户端
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
List<String> urls = new ArrayList<>();
for (MultipartFile file : files) {
String originalFilename = file.getOriginalFilename();
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
// 生成OSS中的文件名
String fileName = System.currentTimeMillis() + suffix;
// 创建PutObjectRequest对象
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileName, new File(originalFilename));
try {
// 上传文件到OSS
PutObjectResult result = ossClient.putObject(putObjectRequest);
// 获取文件的URL
String url = "https://" + bucketName + "." + endpoint + "/" + fileName;
urls.add(url);
} catch (IOException e) {
e.printStackTrace();
}
}
// 关闭OSS客户端
ossClient.shutdown();
// 返回上传文件的URL列表
return urls.toString();
}
}
```
在上面的代码中,我们通过`@RequestParam`注解获取前端传过来的文件列表。然后,我们遍历文件列表,使用OSS客户端将文件上传到OSS,并且获取文件的URL。最后,我们将URL列表返回给前端。
阅读全文