当面付 wordpress插件,衡阳网站搜索引擎优化,wordpress数据库重置,wordpress媒体库空白笔记
文件上传 文件上传是指将本地图片#xff0c;视频#xff0c;音频等文件上传到服务器#xff0c;供其它用户浏览或下载的过程 文件上传前端三要素 : file表单项 post方式 multipart/from-data 服务端接收文件 : 用spring中的API : MultipartFile 要想文件名唯一 …笔记
文件上传 文件上传是指将本地图片视频音频等文件上传到服务器供其它用户浏览或下载的过程 文件上传前端三要素 : file表单项 post方式 multipart/from-data 服务端接收文件 : 用spring中的API : MultipartFile 要想文件名唯一 : 可以使用uuid技术 在SpringBoot中文件上传默认的单个文件最大允许最大大小为1M,如果需要上传大文件可以在application.properties中进行如下配置: #配置单个文件最大上传大小
spring.servlet.multipart.max-file-size10MB
#配置单个请求最大上传大小(一次请求可以上传多个文件)
spring.servlet.multipart.max-request-size100MB 文件的本地存储 : image.transferTo(new File(pathname)); 本地存储 : 无法直接访问 磁盘空间限制 磁盘损坏 OSS : 为每一个文件都提供了一个访问路径可以直接访问到该文件 在aliyun中存储文件;
第三方服务的通用思路: 准备工作 参照官方SDk编写入门程序 集成使用
注意 : SDk Software Development Kit的缩写软件开发工具包包括辅助软件开发工具包(jar包)代码示例等都可以叫做SDk;
阿里云OSS - 使用步骤 注册阿里云(实名认证) 充值 开通对象存储服务(OSS): 点击右上角的控制台。 将鼠标移至左上角三条横线处在显示界面中单击对象存储OSS。 然后点击开通 创建bucket : 直接点击左上角的新建Bucket,然后其它不用改取一个唯一的name,然后将读写权限改为公共读。 获取AccessKey : 注意保存AccessKey和Secret 参照官方SDk编写入门程序 : 点击右下角的SDk下载然后在新出现的页面中点击SDk示例参考官方文档照做即可如java : copy相关语言文件上传的代码即可,如下 : import org.junit.jupiter.api.Test;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import java.io.FileInputStream;
import java.io.InputStream;
public class AliOssTest {
Testpublic void testOss(){// Endpoint以华东1杭州为例其它Region请按实际情况填写。String endpoint https://oss-cn-hangzhou.aliyuncs.com;// 阿里云账号AccessKey拥有所有API的访问权限风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维请登录RAM控制台创建RAM用户。String accessKeyId ---------------------;String accessKeySecret -----------------------;// 填写Bucket名称例如examplebucket。String bucketName -----------;// 填写Object完整路径完整路径中不能包含Bucket名称例如exampledir/exampleobject.txt。String objectName 0001.jpg;// 填写本地文件的完整路径例如D:\\localpath\\examplefile.txt。// 如果未指定本地路径则默认从示例程序所属项目对应本地路径中上传文件流。String filePath C:\\Users\\Administrator\\Pictures\\Saved Pictures\\10.jpg;
// 创建OSSClient实例。OSS ossClient new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {InputStream inputStream new FileInputStream(filePath);// 创建PutObject请求。ossClient.putObject(bucketName, objectName, inputStream);} 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 (Exception 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();}}}
} 如果jdk在9以上除了添加 groupIdcom.aliyun.oss/groupIdartifactIdaliyun-sdk-oss/artifactIdversion3.15.1/version/dependency 还要添加 : dependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactIdversion2.3.1/version/dependencydependencygroupIdjavax.activation/groupIdartifactIdactivation/artifactIdversion1.1.1/version/dependency!-- no more than 2.3.3--dependencygroupIdorg.glassfish.jaxb/groupIdartifactIdjaxb-runtime/artifactIdversion2.3.3/version/dependency 然后在相关代码中更改自己的相关信息(如 : endpoint , accessKeyId,accessKeySecret等) 最后运行程序就可以在自己的Bucket中查看到上传的文件了; 案例集成OSS : 如在新增员工的过程中要上传图片那么服务器端先接收上传的图片,然后通过程序将图片用OSS来存储然后获取OSS中存储好的文件的URl,最后返回URl给前端然后前端自动将图片展示出来。
注意 : Bucket : 存储空间是用户用于存储对象(Object,就是文件)的容器所有对象都必须隶属于某个存储空间。
具体 :
创建一个工具类 AliOSSUtils(将相关信息更改为自己的):
package com.it.utils;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.UUID;
Component
public class AliOSSUtils{
private String endpoint https://oss-cn-hangzhou.aliyuncs.com;private String accessKeyId xxxxxxx;private String accessKeySecret xxxxxx;private String bucketName xxxxxxxxxx;
/*** 实现上传图片到OSS*/public String upload(MultipartFile file) throws IOException {// 获取上传的文件的输入流InputStream inputStream file.getInputStream();
// 避免文件覆盖String originalFilename file.getOriginalFilename();String fileName UUID.randomUUID().toString() originalFilename.substring(originalFilename.lastIndexOf(.));
//上传文件到 OSSOSS ossClient new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);ossClient.putObject(bucketName, fileName, inputStream);
//文件访问路径String url endpoint.split(//)[0] // bucketName . endpoint.split(//)[1] / fileName;
// 关闭ossClientossClient.shutdown();return url;// 把上传到oss的路径返回}
}
然后在该接口中直接调用工具类中的方法即可 : PostMapping(/upload)public Result upload(MultipartFile image) throws IOException {log.info(文件上传文件名 : {},image.getOriginalFilename());
// 调用阿里云OSS工具类进行文件上传String url aliOSSUtils.upload(image);log.info(文件上传完成文件访问的url为 : {},url);
return Result.success(url);}