Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
FLIPPED-AURORA
gin-vue-admin
提交
88ba3440
G
gin-vue-admin
项目概览
FLIPPED-AURORA
/
gin-vue-admin
大约 1 年 前同步成功
通知
332
Star
18154
Fork
5505
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gin-vue-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
You need to sign in or sign up before continuing.
提交
88ba3440
编写于
9月 25, 2020
作者:
Sliver_Horn
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化上传与下载文件示例的上传与删除的api层与service层代码
上级
abbe1cb5
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
61 addition
and
51 deletion
+61
-51
server/api/v1/exa_file_upload_download.go
server/api/v1/exa_file_upload_download.go
+11
-49
server/service/exa_file_upload_download.go
server/service/exa_file_upload_download.go
+50
-2
未找到文件。
server/api/v1/exa_file_upload_download.go
浏览文件 @
88ba3440
...
...
@@ -2,15 +2,12 @@ package v1
import
(
"fmt"
"gin-vue-admin/global"
"gin-vue-admin/global/response"
"gin-vue-admin/model"
"gin-vue-admin/model/request"
resp
"gin-vue-admin/model/response"
"gin-vue-admin/service"
"gin-vue-admin/utils"
"github.com/gin-gonic/gin"
"strings"
)
// @Tags ExaFileUploadAndDownload
...
...
@@ -22,42 +19,19 @@ import (
// @Success 200 {string} string "{"success":true,"data":{},"msg":"上传成功"}"
// @Router /fileUploadAndDownload/upload [post]
func
UploadFile
(
c
*
gin
.
Context
)
{
var
file
model
.
ExaFileUploadAndDownload
noSave
:=
c
.
DefaultQuery
(
"noSave"
,
"0"
)
_
,
header
,
err
:=
c
.
Request
.
FormFile
(
"file"
)
if
err
!=
nil
{
response
.
FailWithMessage
(
fmt
.
Sprintf
(
"上传文件失败,%v"
,
err
),
c
)
}
else
{
// 文件上传后拿到文件路径
var
uploadErr
error
var
filePath
string
var
key
string
if
global
.
GVA_CONFIG
.
LocalUpload
.
Local
{
// 本地上传
uploadErr
,
filePath
,
key
=
utils
.
UploadFileLocal
(
header
)
}
else
{
// 七牛云上传
uploadErr
,
filePath
,
key
=
utils
.
UploadRemote
(
header
)
}
if
uploadErr
!=
nil
{
response
.
FailWithMessage
(
fmt
.
Sprintf
(
"接收返回值失败,%v"
,
err
),
c
)
}
else
{
// 修改数据库后得到修改后的user并且返回供前端使用
var
file
model
.
ExaFileUploadAndDownload
file
.
Url
=
filePath
file
.
Name
=
header
.
Filename
s
:=
strings
.
Split
(
file
.
Name
,
"."
)
file
.
Tag
=
s
[
len
(
s
)
-
1
]
file
.
Key
=
key
if
noSave
==
"0"
{
err
=
service
.
Upload
(
file
)
}
if
err
!=
nil
{
response
.
FailWithMessage
(
fmt
.
Sprintf
(
"修改数据库链接失败,%v"
,
err
),
c
)
}
else
{
response
.
OkDetailed
(
resp
.
ExaFileResponse
{
File
:
file
},
"上传成功"
,
c
)
}
}
return
}
err
,
file
=
service
.
UploadFile
(
header
,
noSave
)
// 文件上传后拿到文件路径
if
err
!=
nil
{
response
.
FailWithMessage
(
fmt
.
Sprintf
(
"修改数据库链接失败,%v"
,
err
),
c
)
return
}
response
.
OkDetailed
(
resp
.
ExaFileResponse
{
File
:
file
},
"上传成功"
,
c
)
}
// @Tags ExaFileUploadAndDownload
...
...
@@ -70,23 +44,11 @@ func UploadFile(c *gin.Context) {
func
DeleteFile
(
c
*
gin
.
Context
)
{
var
file
model
.
ExaFileUploadAndDownload
_
=
c
.
ShouldBindJSON
(
&
file
)
err
,
f
:=
service
.
FindFile
(
file
.
ID
)
if
err
!=
nil
{
if
err
:=
service
.
DeleteFile
(
file
);
err
!=
nil
{
response
.
FailWithMessage
(
fmt
.
Sprintf
(
"删除失败,%v"
,
err
),
c
)
}
else
{
err
=
utils
.
DeleteFile
(
f
.
Key
)
if
err
!=
nil
{
response
.
FailWithMessage
(
fmt
.
Sprintf
(
"删除失败,%v"
,
err
),
c
)
}
else
{
err
=
service
.
DeleteFile
(
f
)
if
err
!=
nil
{
response
.
FailWithMessage
(
fmt
.
Sprintf
(
"删除失败,%v"
,
err
),
c
)
}
else
{
response
.
OkWithMessage
(
"删除成功"
,
c
)
}
}
return
}
response
.
OkWithMessage
(
"删除成功"
,
c
)
}
// @Tags ExaFileUploadAndDownload
...
...
server/service/exa_file_upload_download.go
浏览文件 @
88ba3440
package
service
import
(
"errors"
"gin-vue-admin/global"
"gin-vue-admin/model"
"gin-vue-admin/model/request"
"gin-vue-admin/utils"
"mime/multipart"
"os"
"strings"
)
// @title Upload
...
...
@@ -35,8 +40,24 @@ func FindFile(id uint) (error, model.ExaFileUploadAndDownload) {
// @param file model.ExaFileUploadAndDownload
// @return error
func
DeleteFile
(
file
model
.
ExaFileUploadAndDownload
)
error
{
err
:=
global
.
GVA_DB
.
Where
(
"id = ?"
,
file
.
ID
)
.
Unscoped
()
.
Delete
(
file
)
.
Error
func
DeleteFile
(
file
model
.
ExaFileUploadAndDownload
)
(
err
error
)
{
var
fileFromDb
model
.
ExaFileUploadAndDownload
err
,
fileFromDb
=
FindFile
(
file
.
ID
)
if
err
!=
nil
{
return
errors
.
New
(
"文件不存在"
)
}
if
global
.
GVA_CONFIG
.
LocalUpload
.
Local
{
// 删除本地文件
if
strings
.
Contains
(
fileFromDb
.
Url
,
global
.
GVA_CONFIG
.
LocalUpload
.
FilePath
)
{
if
err
=
os
.
Remove
(
fileFromDb
.
Url
);
err
!=
nil
{
err
=
errors
.
New
(
"本地文件删除失败, err:"
+
err
.
Error
())
}
}
}
else
{
if
err
=
utils
.
DeleteFile
(
file
.
Key
);
err
!=
nil
{
// 删除七牛云文件
err
=
errors
.
New
(
"七牛云文件删除失败, err:"
+
err
.
Error
())
}
}
err
=
global
.
GVA_DB
.
Where
(
"id = ?"
,
file
.
ID
)
.
Unscoped
()
.
Delete
(
file
)
.
Error
return
err
}
...
...
@@ -57,3 +78,30 @@ func GetFileRecordInfoList(info request.PageInfo) (err error, list interface{},
err
=
db
.
Limit
(
limit
)
.
Offset
(
offset
)
.
Order
(
"updated_at desc"
)
.
Find
(
&
fileLists
)
.
Error
return
err
,
fileLists
,
total
}
// @title UploadFile
// @description 根据配置文件判断是文件上传到本地或者七牛云
// @auth (2020/04/05 20:22)
// @param header *multipart.FileHeader
// @param noSave string
// @return err error
// @return file file model.ExaFileUploadAndDownload
func
UploadFile
(
header
*
multipart
.
FileHeader
,
noSave
string
)
(
err
error
,
file
model
.
ExaFileUploadAndDownload
)
{
var
filePath
,
key
string
var
f
model
.
ExaFileUploadAndDownload
if
global
.
GVA_CONFIG
.
LocalUpload
.
Local
{
// 本地上传
err
,
filePath
,
key
=
utils
.
UploadFileLocal
(
header
)
}
else
{
// 七牛云上传
err
,
filePath
,
key
=
utils
.
UploadRemote
(
header
)
}
if
noSave
==
"0"
{
f
.
Url
=
filePath
f
.
Name
=
header
.
Filename
s
:=
strings
.
Split
(
f
.
Name
,
"."
)
f
.
Tag
=
s
[
len
(
s
)
-
1
]
f
.
Key
=
key
return
Upload
(
f
),
f
}
return
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录