文件上传.

这篇博客介绍了文件上传的原理,包括通过AJAX、ElementUI-Vue以及普通的文件上传方式。重点讲解了使用ElementUI、Vue和Axios组合实现文件上传到阿里云OSS的过程,包括申请OSS服务、获取阿里云密钥以及异步上传的步骤。还讨论了本地服务器文件上传的缺点和解决方案。
摘要由CSDN通过智能技术生成

目录

1文件上传的原理

2 上传到本地服务器。
2 通过ajax上传到本地服务器.
3  通过elementui-vue上传到本地服务器。
4 上传到阿里云OSS服务器。

5 elementui+vue+axios完成文件上传
6. 上传到oss阿里云的服务器

6.1 申请oss文件服务

6.2 在oss界面上操作文件上传

6.3 申请阿里云的密钥

7 普通的文件上传到OSS文件服务器

8 elementui 异步上传OSS服务器

9报存用户信息 头像

10其他的一些知识点

1文件上传的原理

form表单提交数据到controller代码(接收参数 图片地址),controller交给dao,dao对数据库进行操作,dao层将处理结果返回给controller层,controller将结果放回给前端

2 上传到本地服务器。

(1)导入文件上传的依赖

<!--文件上传依赖-->
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.4</version>
</dependency>

(2)创建一个页面

<%--
  Created by IntelliJ IDEA.
  User: Acer
  Date: 2022/6/9
  Time: 15:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%--文件上传方式为post提交
    enctype就是encodetype就是编码类型的意思
    这里的form表单必须要设置enctype,文件上传的方式必须要用到post,因为get的长度有限制,当文件过大的时候无法进行上传
    enctype 默认application/x-www-form-rulencoded表示提交表单数据   multipart/form-data可以包含文件数据
    input 的type类型必须为file类型且必须有name属性
    --%>
    <form method="post" action="upload01" enctype="multipart/form-data">
        <input type="file" name="myfile">
            <input type="submit" value="提交"/>
    </form>
</body>
</html>

(3)在springmvc中配置文件上传解析器

<!--文件上传解析器 id的名字必须为multipartResolver-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="10485760"/>
    </bean>

(3)创建upload01接口方法

@Controller
public class ControllerImg {
    //接受参数处理文件
    @RequestMapping("/upload01")
    //MultipartFile myfile  名字必须为和表单的name属性一样
    public String upload01(MultipartFile myfile, HttpServletRequest request) throws IOException {
        //设定文件的存储路径 如果文件不存在就创建文件
        String path=request.getSession().getServletContext().getRealPath("uplaod");
        //创建文件对象存储路径
        File file = new File(path);
        System.out.println(file);
        if (!file.exists()){
            file.mkdirs();
        }
        // 因为重复的文件名 会替换之前的文件,所以使用UUID,可以防止文件名重复  getOriginalFilename是获得文件全名
        String filename= UUID.randomUUID().toString().replace("-","")+ myfile.getOriginalFilename();
        //获取文件路径和文件名
        File file1 = new File(path + "/" + filename);
        // 文件转换,将文件存储转换到file1里
        myfile.transferTo(file1);
        return "";
    }
}

文件上传到本地服务器的缺点?

1. 当服务器重启,本地服务的文件没了。
2. 搭建服务器集群。A服务器1000, B服务器.........
    客户第一次上传时访问的是A服务器。
    客户第二次访问文件,访问的是B服务器。

如何解决本地服务器上传的缺点:

(1)自己搭建一个文件服务器。不会重启。维护。

(2) 使用第三方的文件服务器.

5. elementui+vue+axios完成文件上传

<%--
  Created by IntelliJ IDEA.
  User: Acer
  Date: 2022/6/10
  Time: 13:55
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <!--引入element得css样式-->
    <link type="text/css" rel="stylesheet" href="css/index.css"/>
    <!--引入vue得js文件 这个必须在element之前引入-->
    <script type="text/javascript" src="js/vue.js"></script>
    <script type="text/javascript" src="js/qs.min.js"></script>
    <script type="text/javascript" src="js/axios.min.js"></script>
    <!--element得js文件-->
    <script type="text/javascript" src="js/index.js"></script>
    <style>
        .avatar-uploader .el-upload {
            border: 1px dashed #d9d9d9;
            border-radius: 6px;
            cursor: pointer;
            position: relative;
            overflow: hidden;
        }
        .avatar-uploader .el-upload:hover {
            border-color: #409EFF;
        }
        .avatar-uploader-icon {
           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值