Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
bwallet
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Go
bwallet
Commits
f6fedd70
Commit
f6fedd70
authored
Jun 16, 2020
by
shajiaiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
文件上传
parent
8b2e2cd7
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
138 additions
and
12 deletions
+138
-12
code.go
pkg/e/code.go
+4
-0
msg.go
pkg/e/msg.go
+3
-0
setting.go
pkg/setting/setting.go
+5
-0
file.go
pkg/upload/file.go
+83
-0
upload.go
routers/api/upload.go
+41
-11
router.go
routers/router.go
+2
-1
No files found.
pkg/e/code.go
View file @
f6fedd70
...
...
@@ -41,4 +41,8 @@ const (
ERROR_UPLOAD_SAVE_IMAGE_FAIL
=
30001
ERROR_UPLOAD_CHECK_IMAGE_FAIL
=
30002
ERROR_UPLOAD_CHECK_IMAGE_FORMAT
=
30003
ERROR_UPLOAD_SAVE_FILE_FAIL
=
30011
ERROR_UPLOAD_CHECK_FILE_FAIL
=
30012
ERROR_UPLOAD_CHECK_FILE_FORMAT
=
30013
)
pkg/e/msg.go
View file @
f6fedd70
...
...
@@ -40,6 +40,9 @@ var MsgFlags = map[int]string{
ERROR_UPLOAD_SAVE_IMAGE_FAIL
:
"保存图片失败"
,
ERROR_UPLOAD_CHECK_IMAGE_FAIL
:
"检查图片失败"
,
ERROR_UPLOAD_CHECK_IMAGE_FORMAT
:
"校验图片错误,图片格式或大小有问题"
,
ERROR_UPLOAD_SAVE_FILE_FAIL
:
"保存文件失败"
,
ERROR_UPLOAD_CHECK_FILE_FAIL
:
"检查文件失败"
,
ERROR_UPLOAD_CHECK_FILE_FORMAT
:
"校验文件错误,文件格式或大小有问题"
,
}
// GetMsg get error information based on Code
...
...
pkg/setting/setting.go
View file @
f6fedd70
...
...
@@ -19,6 +19,10 @@ type App struct {
ImageMaxSize
int
ImageAllowExts
[]
string
FileSavePath
string
FileMaxSize
int
FileAllowExts
[]
string
ExportSavePath
string
QrCodeSavePath
string
FontSavePath
string
...
...
@@ -89,6 +93,7 @@ func Setup() {
mapTo
(
"oss"
,
OssSetting
)
AppSetting
.
ImageMaxSize
=
AppSetting
.
ImageMaxSize
*
1024
*
1024
AppSetting
.
FileMaxSize
=
AppSetting
.
FileMaxSize
*
1024
*
1024
ServerSetting
.
ReadTimeout
=
ServerSetting
.
ReadTimeout
*
time
.
Second
ServerSetting
.
WriteTimeout
=
ServerSetting
.
ReadTimeout
*
time
.
Second
RedisSetting
.
IdleTimeout
=
RedisSetting
.
IdleTimeout
*
time
.
Second
...
...
pkg/upload/file.go
0 → 100644
View file @
f6fedd70
package
upload
import
(
"fmt"
"log"
"mime/multipart"
"os"
"path"
"strings"
"bwallet/pkg/file"
"bwallet/pkg/logging"
"bwallet/pkg/setting"
"bwallet/pkg/util"
)
// GetFileFullUrl get the full access path
func
GetFileFullUrl
(
name
string
)
string
{
return
setting
.
AppSetting
.
PrefixUrl
+
"/"
+
GetFilePath
()
+
name
}
// GetFileName get File name
func
GetFileName
(
name
string
)
string
{
ext
:=
path
.
Ext
(
name
)
fileName
:=
strings
.
TrimSuffix
(
name
,
ext
)
fileName
=
util
.
EncodeMD5
(
fileName
)
return
fileName
+
ext
}
// GetFilePath get save path
func
GetFilePath
()
string
{
return
setting
.
AppSetting
.
FileSavePath
}
// GetFileFullPath get full save path
func
GetFileFullPath
()
string
{
return
setting
.
AppSetting
.
RuntimeRootPath
+
GetFilePath
()
}
// CheckFileExt check File file ext
func
CheckFileExt
(
fileName
string
)
bool
{
ext
:=
file
.
GetExt
(
fileName
)
for
_
,
allowExt
:=
range
setting
.
AppSetting
.
FileAllowExts
{
if
strings
.
ToUpper
(
allowExt
)
==
strings
.
ToUpper
(
ext
)
{
return
true
}
}
return
false
}
// CheckFileSize check File size
func
CheckFileSize
(
f
multipart
.
File
)
bool
{
size
,
err
:=
file
.
GetSize
(
f
)
if
err
!=
nil
{
log
.
Println
(
err
)
logging
.
Warn
(
err
)
return
false
}
return
size
<=
setting
.
AppSetting
.
FileMaxSize
}
// CheckFile check if the file exists
func
CheckFile
(
src
string
)
error
{
dir
,
err
:=
os
.
Getwd
()
if
err
!=
nil
{
return
fmt
.
Errorf
(
"os.Getwd err: %v"
,
err
)
}
err
=
file
.
IsNotExistMkDir
(
dir
+
"/"
+
src
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"file.IsNotExistMkDir err: %v"
,
err
)
}
perm
:=
file
.
CheckPermission
(
src
)
if
perm
==
true
{
return
fmt
.
Errorf
(
"file.CheckPermission Permission denied src: %s"
,
src
)
}
return
nil
}
routers/api/upload.go
View file @
f6fedd70
...
...
@@ -9,7 +9,6 @@ import (
"bwallet/pkg/e"
"bwallet/pkg/logging"
"bwallet/pkg/upload"
"fmt"
)
// @Summary Import Image
...
...
@@ -37,12 +36,6 @@ func UploadImage(c *gin.Context) {
savePath
:=
upload
.
GetImagePath
()
src
:=
fullPath
+
imageName
//fmt.Println(imageName)
//fmt.Println(fullPath)
//fmt.Println(savePath)
//fmt.Println(src)
//os.Exit(0)
if
!
upload
.
CheckImageExt
(
imageName
)
||
!
upload
.
CheckImageSize
(
file
)
{
appG
.
Response
(
http
.
StatusBadRequest
,
e
.
ERROR_UPLOAD_CHECK_IMAGE_FORMAT
,
nil
)
return
...
...
@@ -50,21 +43,58 @@ func UploadImage(c *gin.Context) {
err
=
upload
.
CheckImage
(
fullPath
)
if
err
!=
nil
{
logging
.
Warn
(
err
)
appG
.
Response
(
http
.
StatusInternalServerError
,
e
.
ERROR_UPLOAD_CHECK_IMAGE_FAIL
,
nil
)
return
}
if
err
:=
c
.
SaveUploadedFile
(
image
,
src
);
err
!=
nil
{
logging
.
Warn
(
err
)
appG
.
Response
(
http
.
StatusInternalServerError
,
e
.
ERROR_UPLOAD_SAVE_IMAGE_FAIL
,
nil
)
return
}
fmt
.
Println
(
upload
.
GetImageFullUrl
(
imageName
))
fmt
.
Println
(
savePath
+
imageName
)
appG
.
Response
(
http
.
StatusOK
,
e
.
SUCCESS
,
map
[
string
]
string
{
"image_url"
:
upload
.
GetImageFullUrl
(
imageName
),
"image_save_url"
:
savePath
+
imageName
,
})
}
func
UploadFile
(
c
*
gin
.
Context
)
{
appG
:=
app
.
Gin
{
C
:
c
}
file
,
apk
,
err
:=
c
.
Request
.
FormFile
(
"file"
)
if
err
!=
nil
{
logging
.
Warn
(
err
)
appG
.
Response
(
http
.
StatusInternalServerError
,
e
.
ERROR
,
nil
)
return
}
if
apk
==
nil
{
appG
.
Response
(
http
.
StatusBadRequest
,
e
.
INVALID_PARAMS
,
nil
)
return
}
apkName
:=
upload
.
GetFileName
(
apk
.
Filename
)
fullPath
:=
upload
.
GetFileFullPath
()
savePath
:=
upload
.
GetFilePath
()
src
:=
fullPath
+
apkName
if
!
upload
.
CheckFileExt
(
apkName
)
||
!
upload
.
CheckFileSize
(
file
)
{
appG
.
Response
(
http
.
StatusBadRequest
,
e
.
ERROR_UPLOAD_CHECK_FILE_FORMAT
,
nil
)
return
}
err
=
upload
.
CheckFile
(
fullPath
)
if
err
!=
nil
{
appG
.
Response
(
http
.
StatusInternalServerError
,
e
.
ERROR_UPLOAD_CHECK_FILE_FAIL
,
nil
)
return
}
if
err
:=
c
.
SaveUploadedFile
(
apk
,
src
);
err
!=
nil
{
appG
.
Response
(
http
.
StatusInternalServerError
,
e
.
ERROR_UPLOAD_SAVE_FILE_FAIL
,
nil
)
return
}
appG
.
Response
(
http
.
StatusOK
,
e
.
SUCCESS
,
map
[
string
]
string
{
"file_url"
:
upload
.
GetFileFullUrl
(
apkName
),
"file_save_url"
:
savePath
+
apkName
,
})
}
routers/router.go
View file @
f6fedd70
...
...
@@ -17,10 +17,11 @@ func InitRouter() *gin.Engine {
r
.
Use
(
gin
.
Recovery
())
r
.
StaticFS
(
"/upload/
images"
,
http
.
Dir
(
upload
.
GetImag
eFullPath
()))
r
.
StaticFS
(
"/upload/
file"
,
http
.
Dir
(
upload
.
GetFil
eFullPath
()))
//r.StaticFS("/qrcode", http.Dir(qrcode.GetQrCodeFullPath()))
r
.
POST
(
"/auth"
,
api
.
GetAuth
)
r
.
POST
(
"/upload"
,
api
.
UploadFile
)
//r.POST("/upload", api.UploadImage)
api
:=
r
.
Group
(
"/api"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment