若依框架:上传、下载、回显文件怎么处理的,一篇就懂

本文详细描述了在使用若依框架时,如何在富文本框中上传文件、文件上传后的存储路径、以及如何通过后端代码实现文件回显和下载的过程。重点介绍了配置文件设置和拦截器在文件路径重定向中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈
🔥 微信:zsqtcyl 联系我领取福利

在使用若依框架上传文件的时候遇到一个问题:在富文本框中上传一个文件传到哪里了,又怎么回显的,这些问题扯出来好多东西哦,且随我一步步看。

🤞主要说的是后端的代码实现,前端的在components组件中的Editor中自己看就行🤞

🎈上传后怎么处理的

先把后端代码贴出来,代码中还调用了各种方法就不粘出来了

    @PostMapping("/upload")
    public AjaxResult uploadFile(MultipartFile file) throws Exception
    {
        try
        {
            // 上传文件路径
            String filePath = RuoYiConfig.getUploadPath();
            // 上传并返回新文件名称
            String fileName = FileUploadUtils.upload(filePath, file);
            String url = serverConfig.getUrl() + fileName;
            AjaxResult ajax = AjaxResult.success();
            ajax.put("url", url);
            ajax.put("fileName", fileName);
            ajax.put("newFileName", FileUtils.getName(fileName));
            ajax.put("originalFilename", file.getOriginalFilename());
            return ajax;
        }
        catch (Exception e)
        {
            return AjaxResult.error(e.getMessage());
        }
    }

上传接口 /common/upload

  1. 接口中首先获取文件要存储的路径
    String filePath = RuoYiConfig.getUploadPath(); 因为在配置文件application.yml我们可以找到一个这段代码:

    文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)

    profile: D:/ruoyi/uploadPath 就是上传文件的根路径。

  2. 然后对上传的文件进行各种检查:文件大小,文件后缀等等,

  3. 然后开始把上传的文件存到本地
    String fileName = FileUploadUtils.upload(filePath, file);

  4. 最后获取文件的url路径
    举个例子:文件地址是D:/ruoyi/uploadPath/upload/2024/01/01/12345.jpg
    转换后是profile/upload/2024/01/01/12345.jpg 然后存到数据库,发现没有前缀变了,这个时候文件就上传完了,profile/upload/2024/01/01/12345.jpg传回前端。前缀为什么边接着看。

🎈上传后的文件怎么回显和下载

🍮文件回显

在富文本框中文件上传之后,需要进行回显,上传后拿到了地址profile/upload/2024/01/01/12345.jpg,这个时候去访问后端localhost/dev-api/profile/upload/2024/01/01/12345.jpg
访问地址的过程中经历了两步处理
第一步:前端地址映射
localhost/dev-api/ 变成http://localhost:8080
在这里插入图片描述
第二步:
访问后端 http://localhost:8080/profile/upload/2024/01/01/12345.jpg
会发现没有/profile 这个接口,那这个接口在哪?访问后端最先走过的就是拦截器,查看各种拦截器,最后在这个地方找到了ResourcesConfig配置类中。
在这里插入图片描述
这个方法会把/profile开头的路径给替换掉 RuoYiConfig.getProfile() 会获取到 最初的文件根路径D:/ruoyi/uploadPath 会自动转向到 RuoYiConfig.getProfile() 目录下寻找对应的资源文件,也就找到了请求文件最后返回file:D:/ruoyi/uploadPath/upload/123456.jpg文件流。

🍮文件下载

和文件回显同理。

🍚总结

大功告成,撒花致谢🎆🎇🌟,关注我不迷路,带你起飞带你富。
Writted By 知识浅谈

### 若依框架文件上传回显照片的实现方法 在若依框架中,为了实现在页面上成功上传文件后的照片回显功能,需关注几个核心环节:文件上传接口的设计、服务器端存储机制以及客户端展示逻辑。 #### 服务端配置与响应设计 当用户通过富文本编辑器或其他方式提交文件时,这些请求会被发送至预设的服务端API。对于若依框架而言,其内置了对阿里云OSS的支持[^1]。这意味着上传操作实际上会将文件保存到指定的对象存储空间内,并获取对应的唯一标识符(即`oss_id`)。然而,在实际应用过程中发现直接返回此ID并不利于前端直观显示图片链接;因此建议调整API使得除了返回`oss_id`外还应附加完整的访问URL以便于后续处理[^2]。 ```json { "code": 0, "msg": "", "data": { "url": "https://example-bucket.oss-cn-hangzhou.aliyuncs.com/path/to/image.png", "ossId": "unique_identifier" } } ``` #### 客户端数据绑定及视图更新策略 针对上述提到的问题——由于重复添加HTTP前缀造成图像无法正常加载的情况,可以通过正则表达式去除多余的协议头来修复这个问题[^3]: ```javascript // JavaScript代码片段用于修正图片路径中的多余http(s)://部分 function fixImageUrl(url){ return url.replace(/^https?:\/\//, ''); } // Vue.js模板内的使用示例 <img v-bind:src="'https://' + fixImageUrl(item.imageUrl)" alt="Example Image"> ``` 另外需要注意的是关于逗号分隔字符串解析错误的现象,这通常发生在多选文件场景下。为了避免此类问题的发生,可以考虑采用更稳健的数据结构比如数组形式传递参数给子组件并利用相应的方法来进行拆解组合[^4]: ```vue <template> <!-- 子组件接收props属性 --> <upload-component :file-list="formattedFileList"></upload-component> </template> <script> export default { props: ['initialFiles'], computed:{ formattedFileList(){ let files = []; if(Array.isArray(this.initialFiles)){ files = this.initialFiles; }else if(typeof this.initialFiles === 'string'){ // 使用适当字符作为分隔符进行切割转换为数组 files = this.initialFiles.split(/\s*,\s*/); } return files.map(file => ({name: file})); } } }; </script> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识浅谈

您的支持将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值