发表于: 2021-10-13 23:33:53

1 1006


一,今天完成的事情

任务七


1, 我的短信注册模块,如果是+86,需要在注册的时候自己写+86,否则无法成功。因为用的短信发送需要指定国际代码。我没有使用能选择国家地区号的前端页面,所以测试的时候麻烦填写+86的号码,不是+86号码的功能我也没有开通。

集成之前当然是先纯粹的先测试需要用的Util是否能使用,才加上controller。

我的短信注册的controller和email注册差不多。只是财迷为了省钱,每10小时最多发5条短信,如果用完5条,这次要等至少10小时。

最终成功进入数据库。



注册成功


马上用username和手机号码登录。成功

2,不论是什么模块,都要参考官方自己的文档。越开始,越从单一开始。最后才加到整个项目中。

OSS的上传文件文档可以一读,

https://help.aliyun.com/document_detail/31885.htm?spm=a2c4g.11186623.0.0.44d82cb7iYblVq#task-u3p-3n4-tdb

但是主要还是,从OSS的Java SDK的快速入门开始

https://help.aliyun.com/document_detail/32011.html


我最终选看文档,是没看OSS Java SDK所有文档。


3,提醒:需要增加 OSS 权限:访问控制 -> 用户 -> 权限管理 -> 添加权限

https://ram.console.aliyun.com/users/nicole

开发阶段,我直接给自己AliyunOSSFullAccess


4,上传图片后,能够自动更新图片地址到数据库中。所以首先要有相应的dao层,负责更新url。为了更新成功,需要系统3个可以使用的用户名之一。前端给我的逻辑是用户会填上自己的username,所以我就按照前端的逻辑做了。

<update id="uploadImageurl" parameterType="com.nicole.registerupload.entity.User">
   update user set imageurl=#{imageurl,jdbcType=VARCHAR}
where username = #{username,jdbcType=VARCHAR}
</update>


5,我想到的上传的关键。

1)单纯测试上传成功。OSS一般只参考简单上传即可。

2)搞清楚我用的前端页面,

<form action="${path}/u/upload/image" method="post" enctype="multipart/form-data">

返回的文件类型,看是不是需要做进一步处理,能够成功上传。

需要配置SpringMVC的CommonsMultipartFile文件解析器

<!-- 支持上传文件前端 -->
<dependency>
 <groupId>commons-io</groupId>
 <artifactId>commons-io</artifactId>
 <version>2.5</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>


spring-mvc.xml加入

<!--配置文件上传解析器  其中id的值必须是commonsMultipartResolver 只是个固定写法,其他的不行-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
   <!--限制上传文件的最大字节数,1024个字节为1kB,即上传的文件不能大于5M-->
   <property name="maxUploadSize" value="5242880"/>
   <!--设置请求的编码格式为UTF-8,默认为iso-8859-1-->
   <property name="defaultEncoding" value="UTF-8"/>
</bean>


也是配置aliOSS.properties,用

@Value("${aliAccessKeyId}")
private String aliAccessKeyId;

配置变量。


类名上注意需要加注解

@Component
@PropertySource("classpath:aliOSS.properties")
public class OSSUtil {


参考OSS官方,测试成功上传代码,查看结果。总结结果后,写出OSS关于上传的util。

//上传文件流
//以下代码用于将文件流上传到目标存储空间examplebucketexampledir目录下的exampleobject.txt文件。
private void uploadFileStream() throws FileNotFoundException {
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,
   // Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com
   String endpoint = "yourendpoint";
   // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。
   // 强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
   String accessKeyId = "youraccesskeyid";
   String accessKeySecret = "youraccesskeysecret";

   // 创建OSSClient实例。
   OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

   // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
   InputStream inputStream = new FileInputStream("C:\\upload\\puppy.jpg");
   // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
   ossClient.putObject("nicoleimage", "filestream/puppyStream.jpg", inputStream);

   // 关闭OSSClient

   ossClient.shutdown();

}


上传成功,传回来的图片Url显示也正常,我的逻辑是传回路径,成功显示在了结果页面。

上传成功。包括查看OSS相关bucket。采用了随机数字文件命名。


填写的是用户名nicole,添加文件url成功


3)这个功能主要是为了让客户上传自己的头像,所以一定需要能返回上传文件的地址的存储端。

https://help.aliyun.com/document_detail/39607.htm?spm=a2c4g.11186623.0.0.496540c2pKuMwh#concept-39607-zh

https://help.aliyun.com/document_detail/32016.htm?spm=a2c4g.11186623.0.0.1fda2f41lF5bNN#concept-32016-zh

顺藤摸瓜

4)如果需要把图片文件设置成不是下载,是浏览,可能还需要做其它处理。这个行为可能叫预览行为。

现在不要求展示用户页面,所以不展示头像。任务七这个可以忽略。


二,今天问题

应该是不同逻辑中,不要使用相同的key。如果key相同,一般都是string,会发生各种意想不到的问题。本来各种存储系统就是讲究Key唯一。


三,今天的收获

代码不一定难,某样工具可能就是不那么会用。

短信验证码,上传补充。


四,明天的计划

任务七





返回列表 返回列表
评论

    分享到