文件下载

文件上传,下载都是通过流的方式进行的

list.ftl

<#include "../layout/layout.ftl">
<@html page_title="资源列表" page_tab="mediaresource">
    <section class="content-header">
        <h1>
            特殊资源
            <small>列表</small>
        </h1>
        <ol class="breadcrumb">
            <li><a href="/index"><i class="fa fa-dashboard"></i> 首页</a></li>
            <li><a href="/admin/mediaresource/list">特殊资源</a></li>
            <li class="active">列表</li>
        </ol>
    </section>
    <section class="content">
        <div class="box box-info">
            <div class="box-header with-border">
                <h3 class="box-title">特殊资源列表</h3>
                <#if sec.hasPermission('mediaResource:add')>
                    <a href="/admin/mediaresource/add" class="btn btn-xs btn-primary pull-right">添加</a>
                </#if>
            </div>
            <!-- /.box-header -->
            <div class="box-body">
                <form action="/admin/mediaresource/list" class="form-inline">
                    <div class="form-group" style="margin-bottom: 10px;">
                        <input type="text" id="title" name="title" value="${title!}"
                               class="form-control" placeholder="标题">
                        <button type="submit" class="btn btn-primary btn-sm">搜索</button>
                    </div>
                </form>
                <table class="table table-bordered table-striped">
                    <thead>
                    <tr>
                        <th>#</th>
                        <th>标题</th>
                        <th>创建时间</th>
                        <th>资源</th>
                        <th>操作</th>
                    </tr>
                    </thead>
                    <tbody>
                    <#list page.records as mediaResource>
                        <tr>
                            <td>${mediaResource.id}</td>
                            <td>${mediaResource.title!}</td>
                            <td>${mediaResource.create_date!}</td>
                            <td>${mediaResource.file_name!}</td>
                            <td>
                                <#if sec.hasPermission('mediaresource:edit')>
                                    <a href="/admin/mediaresource/down?id=${mediaResource.id}" class="btn btn-xs btn-warning">下载</a>
                                </#if>
                                <#if sec.hasPermission('mediaresource:edit')>
                                    <a href="/admin/mediaresource/edit?id=${mediaResource.id}" class="btn btn-xs btn-warning">编辑</a>
                                </#if>
                                <#if sec.hasPermission("mediaresource:delete")>
                                    <button onclick="deleteBtn('${mediaResource.id}')" class="btn btn-xs btn-danger">删除
                                    </button>
                                </#if>
                            </td>
                        </tr>
<#--                        <tr>-->
<#--                            <td colspan="5">${mediaResource.url!}</td>-->
<#--                        </tr>-->
                    </#list>
                    </tbody>
                </table>
            </div>
        </div>
        <#include "../layout/paginate.ftl">
        <@paginate currentPage=page.current totalPage=page.pages actionUrl="/admin/mediaResource/list"
        urlParas="&title=${title!}"/>
    </section>
    <script>

        <#if sec.hasPermission("mediaResource:delete")>

        function deleteBtn(id) {
            if (confirm('确定要删除这条评论吗?')) {
                $.get("/admin/mediaresource/delete?id=" + id, function (data) {
                    if (data.code === 200) {
                        toast("成功", "success");
                        setTimeout(function () {
                            window.location.reload();
                        }, 700);
                    } else {
                        toast(data.description);
                    }
                })
            }
        }

        </#if>
    </script>
</@html>

 

 

MediaResourceController
package com.bfr.telinksemifourm.manage.controller.admin;

import com.bfr.telinksemifourm.manage.service.IFaqService;
import com.bfr.telinksemifourm.manage.service.impl.MediaResourceService;
import com.bfr.telinksemifourm.manage.util.FileUtil;
import com.bfr.telinksemifourm.manage.util.MyPage;
import com.bfr.telinksemifourm.manage.util.Result;
import com.bfr.telinksemifourm.shared.model.Faq;
import com.bfr.telinksemifourm.shared.model.MediaResource;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by .
 * Copyright (c) 2020, All Rights Reserved.
 *
 */
@Controller
@RequestMapping("/admin/mediaresource")
public class MediaResourceController extends BaseAdminController {

    @Autowired
    private MediaResourceService mediaResourceService;
    @Autowired
    private FileUtil fileUtil;

    @RequiresPermissions("mediaresource:list")
    @GetMapping("/list")
    public String list(@RequestParam(defaultValue = "1") Integer pageNo, String title, Model model) {
        if (StringUtils.isEmpty(title)) title = null;
        Map map = new HashMap();
        map.put("title", title);
        MyPage<Map<String, Object>> page = mediaResourceService.selectPageByMap(pageNo, map);
        model.addAttribute("page", page);
        model.addAttribute("title", title);
        return "admin/media_resource/list";
    }

    @RequiresPermissions("mediaresource:add")
    @GetMapping("/add")
    public String add(Model model) {
        return "admin/media_resource/add";
    }

    @RequiresPermissions("mediaresource:add")
    @PostMapping("/add")
    public String save(Faq faq) {
        return redirect("admin/mediaResource/list");
    }

    @RequiresPermissions("mediaresource:edit")
    @GetMapping("/edit")
    public String edit(Integer id, Model model) {
        MediaResource mediaResource = mediaResourceService.selectById(id);
        model.addAttribute("mediaResource", mediaResource);
        return "admin/media_resource/edit";
    }

    /**
     * 修改成功
     *
     * @author zxk
     * @date 2020/7/17
     */
    @RequiresPermissions("mediaresource:edit")
    @PostMapping("/edit")
    @ResponseBody
    public Result update(@RequestParam("file") MultipartFile file, Integer id, String title, String content) {
        if (mediaResourceService.updateMediaResource(file, id, title, content)) {
            return success();
        }
        return error("修改失败");
    }

    @RequiresPermissions("mediaresource:delete")
    @GetMapping("/delete")
    @ResponseBody
    public Result delete(Integer id) {
        mediaResourceService.deleteById(id);
        return success();
    }

    /**
     * 下载文件
     *
     * @author zxk
     * @date 2020/7/6
     */
    @RequiresPermissions("mediaresource:down")
    @GetMapping("/down")
    @ResponseBody
    public Result down(Integer id) {
        boolean downFile = mediaResourceService.downFile(id);
        if (downFile){
            return success();
        }
        return error("下载失败");
    }

}

 

MediaResourceService
package com.bfr.telinksemifourm.manage.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.bfr.telinksemifourm.manage.mapper.MediaResourceMapper;
import com.bfr.telinksemifourm.manage.service.IMediaResourceService;
import com.bfr.telinksemifourm.manage.service.ISystemConfigService;
import com.bfr.telinksemifourm.manage.util.FileUtil;
import com.bfr.telinksemifourm.manage.util.MyPage;
import com.bfr.telinksemifourm.shared.model.MediaResource;
import com.bfr.telinksemifourm.shared.model.OAuthUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

@Service
@Transactional
public class MediaResourceService implements IMediaResourceService {

    @Autowired
    private MediaResourceMapper mediaResourceMapper;
    @Autowired
    private ISystemConfigService systemConfigService;
    @Autowired
    private FileUtil fileUtil;
    @Autowired
    private HttpServletResponse response;

    @Override
    public MyPage<Map<String, Object>> selectPageByMap(Integer pageNo, Map map) {
        MyPage<Map<String, Object>> iPage = new MyPage<>(pageNo, Integer.parseInt((String) systemConfigService
                .selectAllConfig().get("page_size")));
        return mediaResourceMapper.selectPageByMap(iPage, map);
    }

    @Override
    public MediaResource selectById(Integer id) {
        return mediaResourceMapper.selectById(id);
    }

    @Override
    public void deleteById(Integer id) {
        mediaResourceMapper.deleteById(id);
    }

    @Override
    public boolean saveMediaResource(MediaResource mediaResource) {
        if (mediaResourceMapper.insert(mediaResource) > 0){
            return true;
        }
        return false;
    }

    @Override
    public boolean updateMediaResource(MultipartFile file, Integer id, String title, String content) {
        MediaResource mediaResource = mediaResourceMapper.selectById(id);
        if (!StringUtils.isEmpty(file.getOriginalFilename())){
            String url = fileUtil.uploadtop(file, null, "mediaresource" );
            if (!StringUtils.isEmpty(url)){
                mediaResource.setUrl(url);
                mediaResource.setFileName(file.getOriginalFilename());
            }
        }
        mediaResource.setTitle(title);
        mediaResource.setContent(content);
        if (mediaResourceMapper.updateById(mediaResource) > 0){
            return true;
        }
        return false;
    }

    public MediaResource selectOne(Integer id){
        QueryWrapper<MediaResource> wrapper = new QueryWrapper<>();
        wrapper.lambda().eq(MediaResource::getId, id);
        return mediaResourceMapper.selectOne(wrapper);
    };

    @Override
    public boolean downFile(Integer id) {
        MediaResource mediaResource = this.selectOne(id);
        if (mediaResource == null){
            return false;
        }

        try {
            String fileUrl = mediaResource.getUrl();
            fileUrl = fileUrl.substring(fileUrl.lastIndexOf("/") + 1, fileUrl.indexOf("?"));
            boolean bl = fileUtil.downFile(fileUrl, "mediaresource", response);
            if (bl){
                return true;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值