文件上传,下载都是通过流的方式进行的
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;
}
}