Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
ppt_server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Li Feifei
ppt_server
Commits
4c6db8b0
Commit
4c6db8b0
authored
May 14, 2021
by
Li Feifei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
print log
parent
2d1da19e
Pipeline
#14632
passed with stages
in 1 minute 0 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
43 deletions
+40
-43
upload.go
upload/upload.go
+40
-43
No files found.
upload/upload.go
View file @
4c6db8b0
...
@@ -3,8 +3,6 @@ package upload
...
@@ -3,8 +3,6 @@ package upload
import
(
import
(
"archive/zip"
"archive/zip"
"bytes"
"bytes"
"crypto/md5"
"encoding/hex"
"encoding/json"
"encoding/json"
"errors"
"errors"
"fmt"
"fmt"
...
@@ -48,6 +46,7 @@ const docUrl string = "http://doc.offcncloud.com/"
...
@@ -48,6 +46,7 @@ const docUrl string = "http://doc.offcncloud.com/"
func
init
()
{
func
init
()
{
log
.
SetFlags
(
log
.
Lshortfile
|
log
.
LstdFlags
)
once
.
Do
(
func
()
{
once
.
Do
(
func
()
{
Pool
=
workpool
.
New
(
10
)
Pool
=
workpool
.
New
(
10
)
})
})
...
@@ -110,14 +109,14 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -110,14 +109,14 @@ func Down(v *models.XyuSmallTempFiles) {
resp
,
err
:=
http
.
Get
(
url
)
resp
,
err
:=
http
.
Get
(
url
)
if
err
!=
nil
{
if
err
!=
nil
{
UpdateFileError
(
"1"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"1"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
fmt
.
Println
(
err
)
log
.
Println
(
err
)
return
return
}
}
defer
resp
.
Body
.
Close
()
defer
resp
.
Body
.
Close
()
// 创建一个文件用于保存
// 创建一个文件用于保存
out
,
err
:=
os
.
Create
(
filePath
)
out
,
err
:=
os
.
Create
(
filePath
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
log
.
Println
(
err
)
UpdateFileError
(
"1"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"1"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
...
@@ -126,7 +125,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -126,7 +125,7 @@ func Down(v *models.XyuSmallTempFiles) {
// 然后将响应流和文件流对接起来
// 然后将响应流和文件流对接起来
_
,
err
=
io
.
Copy
(
out
,
resp
.
Body
)
_
,
err
=
io
.
Copy
(
out
,
resp
.
Body
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
log
.
Println
(
err
)
UpdateFileError
(
"1"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"1"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
...
@@ -136,19 +135,19 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -136,19 +135,19 @@ func Down(v *models.XyuSmallTempFiles) {
err
:=
o
.
QueryTable
(
"xyu_room"
)
.
Filter
(
"room_num"
,
v
.
RoomNum
)
.
One
(
&
room
)
err
:=
o
.
QueryTable
(
"xyu_room"
)
.
Filter
(
"room_num"
,
v
.
RoomNum
)
.
One
(
&
room
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
log
.
Println
(
err
)
return
return
}
}
bucket
,
err
:=
newOssClient
()
bucket
,
err
:=
newOssClient
()
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
log
.
Println
(
err
)
return
return
}
}
file
,
err
:=
os
.
Open
(
filePath
)
file
,
err
:=
os
.
Open
(
filePath
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
log
.
Println
(
err
)
return
return
}
}
defer
file
.
Close
()
defer
file
.
Close
()
...
@@ -158,7 +157,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -158,7 +157,7 @@ func Down(v *models.XyuSmallTempFiles) {
t
.
Year
(),
t
.
Month
(),
t
.
Day
(),
t
.
Hour
(),
t
.
Minute
(),
t
.
Second
())
t
.
Year
(),
t
.
Month
(),
t
.
Day
(),
t
.
Hour
(),
t
.
Minute
(),
t
.
Second
())
slice_path
:=
strings
.
Split
(
objectName
,
"/"
)
slice_path
:=
strings
.
Split
(
objectName
,
"/"
)
fmt
.
Println
(
slice_path
[
2
])
log
.
Println
(
slice_path
[
2
])
room_file
[
"room_id"
]
=
room
.
Id
room_file
[
"room_id"
]
=
room
.
Id
room_file
[
"id"
]
=
t
.
Unix
()
room_file
[
"id"
]
=
t
.
Unix
()
room_file
[
"is_courseware"
]
=
"1"
room_file
[
"is_courseware"
]
=
"1"
...
@@ -197,13 +196,13 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -197,13 +196,13 @@ func Down(v *models.XyuSmallTempFiles) {
fd
,
err
:=
os
.
Open
(
filePath
)
fd
,
err
:=
os
.
Open
(
filePath
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
log
.
Println
(
err
)
return
return
}
}
defer
fd
.
Close
()
defer
fd
.
Close
()
fmt
.
Println
(
"objectName == "
,
objectName
)
log
.
Println
(
"objectName == "
,
objectName
)
objectPath
:=
objectName
[
0
:
strings
.
LastIndex
(
objectName
,
"/"
)]
+
"/"
objectPath
:=
objectName
[
0
:
strings
.
LastIndex
(
objectName
,
"/"
)]
+
"/"
room_file
[
"path"
]
=
objectName
room_file
[
"path"
]
=
objectName
err
=
bucket
.
PutObject
(
objectName
,
fd
)
err
=
bucket
.
PutObject
(
objectName
,
fd
)
...
@@ -214,17 +213,20 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -214,17 +213,20 @@ func Down(v *models.XyuSmallTempFiles) {
furl
:=
"https://xiaoyu-live.oss-cn-beijing-internal.aliyuncs.com/"
+
objectName
furl
:=
"https://xiaoyu-live.oss-cn-beijing-internal.aliyuncs.com/"
+
objectName
maps
,
err
:=
getFileInfo
(
furl
)
maps
,
err
:=
getFileInfo
(
furl
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"2 === "
,
err
)
log
.
Println
(
"2 === "
,
err
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
if
v
,
ok
:=
maps
[
"error"
];
ok
{
log
.
Println
(
v
)
}
if
_
,
ok
:=
maps
[
"FileSize"
];
!
ok
{
if
_
,
ok
:=
maps
[
"FileSize"
];
!
ok
{
log
.
Println
(
maps
)
log
.
Println
(
maps
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
if
_
,
ok
:=
maps
[
"FileSize"
]
.
(
float64
);
!
ok
{
if
_
,
ok
:=
maps
[
"FileSize"
]
.
(
float64
);
!
ok
{
fmt
.
Println
(
"4==="
,
err
)
log
.
Println
(
"4==="
,
err
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
...
@@ -255,7 +257,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -255,7 +257,7 @@ func Down(v *models.XyuSmallTempFiles) {
reader
,
err
:=
zip
.
OpenReader
(
"/data/files/"
+
contentHash
+
".zip"
)
reader
,
err
:=
zip
.
OpenReader
(
"/data/files/"
+
contentHash
+
".zip"
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"5==="
,
err
)
log
.
Println
(
"5==="
,
err
)
UpdateFileError
(
"4"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"4"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
...
@@ -306,7 +308,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -306,7 +308,7 @@ func Down(v *models.XyuSmallTempFiles) {
err
=
Pool
.
Wait
()
err
=
Pool
.
Wait
()
if
err
!=
nil
{
if
err
!=
nil
{
UpdateFileError
(
"5"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"5"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
fmt
.
Println
(
err
)
log
.
Println
(
err
)
return
return
}
}
...
@@ -323,7 +325,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -323,7 +325,7 @@ func Down(v *models.XyuSmallTempFiles) {
wordFloat64
)
wordFloat64
)
if
err
!=
nil
{
if
err
!=
nil
{
UpdateFileError
(
"6"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"6"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
fmt
.
Println
(
err
)
log
.
Println
(
err
)
return
return
}
}
}()
}()
...
@@ -335,14 +337,14 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -335,14 +337,14 @@ func Down(v *models.XyuSmallTempFiles) {
err
=
CreateFileDataBase
(
room_file
)
err
=
CreateFileDataBase
(
room_file
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"err=="
,
err
)
log
.
Println
(
"err=="
,
err
)
return
return
}
}
}
}
elapsed
:=
time
.
Since
(
t
)
elapsed
:=
time
.
Since
(
t
)
fmt
.
Println
(
"filename == "
,
filename
,
" 上传成功, 上传耗时 == "
,
elapsed
)
log
.
Println
(
"filename == "
,
filename
,
" 上传成功, 上传耗时 == "
,
elapsed
)
// 删除压缩包和删除文件
// 删除压缩包和删除文件
defer
os
.
Remove
(
filePath
)
defer
os
.
Remove
(
filePath
)
defer
os
.
Remove
(
"/data/files/"
+
contentHash
+
".zip"
)
defer
os
.
Remove
(
"/data/files/"
+
contentHash
+
".zip"
)
...
@@ -378,13 +380,13 @@ func webToken() (*http.Client, string, error) {
...
@@ -378,13 +380,13 @@ func webToken() (*http.Client, string, error) {
res
,
err
:=
client
.
Do
(
req
)
res
,
err
:=
client
.
Do
(
req
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"token请求失败"
,
err
)
log
.
Println
(
"token请求失败"
,
err
)
return
&
http
.
Client
{},
""
,
err
return
&
http
.
Client
{},
""
,
err
}
}
bodys
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
bodys
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"获取数据失败"
,
err
)
log
.
Println
(
"获取数据失败"
,
err
)
return
&
http
.
Client
{},
""
,
err
return
&
http
.
Client
{},
""
,
err
}
}
...
@@ -401,7 +403,7 @@ func webToken() (*http.Client, string, error) {
...
@@ -401,7 +403,7 @@ func webToken() (*http.Client, string, error) {
//登录成功获取token
//登录成功获取token
t_res
,
err
:=
client
.
Get
(
WEBURL
+
"/web/admin"
)
t_res
,
err
:=
client
.
Get
(
WEBURL
+
"/web/admin"
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"token无效"
,
err
)
log
.
Println
(
"token无效"
,
err
)
return
&
http
.
Client
{},
""
,
err
return
&
http
.
Client
{},
""
,
err
}
}
defer
t_res
.
Body
.
Close
()
defer
t_res
.
Body
.
Close
()
...
@@ -426,7 +428,7 @@ func UpdateFileError(code , uuid, room_num, path string) error {
...
@@ -426,7 +428,7 @@ func UpdateFileError(code , uuid, room_num, path string) error {
vv
.
Add
(
"path"
,
path
)
vv
.
Add
(
"path"
,
path
)
client
,
token
,
err
:=
webToken
()
client
,
token
,
err
:=
webToken
()
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"token 获取失败"
,
err
)
log
.
Println
(
"token 获取失败"
,
err
)
return
err
return
err
}
}
vv
.
Add
(
"_token"
,
token
)
vv
.
Add
(
"_token"
,
token
)
...
@@ -435,30 +437,31 @@ func UpdateFileError(code , uuid, room_num, path string) error {
...
@@ -435,30 +437,31 @@ func UpdateFileError(code , uuid, room_num, path string) error {
req
,
err
:=
http
.
NewRequest
(
"POST"
,
WEBURL
+
"/web/room_files_error"
,
payload
)
req
,
err
:=
http
.
NewRequest
(
"POST"
,
WEBURL
+
"/web/room_files_error"
,
payload
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"123"
)
log
.
Println
(
err
)
return
err
return
err
}
}
req
.
Header
.
Add
(
"content-type"
,
"multipart/form-data"
)
req
.
Header
.
Add
(
"content-type"
,
"multipart/form-data"
)
req
.
Header
.
Add
(
"Content-Type"
,
"application/x-www-form-urlencoded"
)
req
.
Header
.
Add
(
"Content-Type"
,
"application/x-www-form-urlencoded"
)
res
,
err
:=
client
.
Do
(
req
)
res
,
err
:=
client
.
Do
(
req
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"5555"
)
log
.
Println
(
err
)
return
err
return
err
}
}
defer
res
.
Body
.
Close
()
defer
res
.
Body
.
Close
()
post_body
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
post_body
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"456"
)
log
.
Println
(
err
)
return
err
return
err
}
}
map2
:=
make
(
map
[
string
]
interface
{})
map2
:=
make
(
map
[
string
]
interface
{})
err
=
json
.
Unmarshal
(
post_body
,
&
map2
)
err
=
json
.
Unmarshal
(
post_body
,
&
map2
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"678"
)
log
.
Println
(
err
)
return
err
return
err
}
}
if
int
(
map2
[
"code"
]
.
(
float64
))
!=
200
{
if
int
(
map2
[
"code"
]
.
(
float64
))
!=
200
{
log
.
Println
(
"消息下发失败"
)
return
errors
.
New
(
"消息下发失败"
)
return
errors
.
New
(
"消息下发失败"
)
}
}
return
nil
return
nil
...
@@ -473,7 +476,7 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
...
@@ -473,7 +476,7 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
}
}
client
,
token
,
err
:=
webToken
()
client
,
token
,
err
:=
webToken
()
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"token 获取失败"
,
err
)
log
.
Println
(
"token 获取失败"
,
err
)
return
err
return
err
}
}
...
@@ -483,27 +486,27 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
...
@@ -483,27 +486,27 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
req
,
err
:=
http
.
NewRequest
(
"POST"
,
WEBURL
+
"/web/room_files_add"
,
payload
)
req
,
err
:=
http
.
NewRequest
(
"POST"
,
WEBURL
+
"/web/room_files_add"
,
payload
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"123"
)
log
.
Println
(
err
)
return
err
return
err
}
}
req
.
Header
.
Add
(
"content-type"
,
"multipart/form-data"
)
req
.
Header
.
Add
(
"content-type"
,
"multipart/form-data"
)
req
.
Header
.
Add
(
"Content-Type"
,
"application/x-www-form-urlencoded"
)
req
.
Header
.
Add
(
"Content-Type"
,
"application/x-www-form-urlencoded"
)
res
,
err
:=
client
.
Do
(
req
)
res
,
err
:=
client
.
Do
(
req
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"5555"
)
log
.
Println
(
err
)
return
err
return
err
}
}
defer
res
.
Body
.
Close
()
defer
res
.
Body
.
Close
()
post_body
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
post_body
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"456"
)
log
.
Println
(
err
)
return
err
return
err
}
}
map2
:=
make
(
map
[
string
]
interface
{})
map2
:=
make
(
map
[
string
]
interface
{})
err
=
json
.
Unmarshal
(
post_body
,
&
map2
)
err
=
json
.
Unmarshal
(
post_body
,
&
map2
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"678"
)
log
.
Println
(
err
)
return
err
return
err
}
}
...
@@ -635,16 +638,6 @@ func newOssClient() (*oss.Bucket, error) {
...
@@ -635,16 +638,6 @@ func newOssClient() (*oss.Bucket, error) {
return
bucket
,
nil
return
bucket
,
nil
}
}
func
fileContentHash
(
file
io
.
Reader
)
(
string
,
[]
byte
)
{
b
,
err
:=
ioutil
.
ReadAll
(
file
)
if
err
!=
nil
{
fmt
.
Println
(
err
)
}
hash
:=
md5
.
New
()
io
.
WriteString
(
hash
,
string
(
b
))
result
:=
hash
.
Sum
(
nil
)
return
fmt
.
Sprintf
(
"%s"
,
hex
.
EncodeToString
(
result
)),
b
}
func
downloadFile
(
url
,
contentHash
string
,
fb
func
(
length
,
downLen
int64
))
error
{
func
downloadFile
(
url
,
contentHash
string
,
fb
func
(
length
,
downLen
int64
))
error
{
var
(
var
(
...
@@ -656,14 +649,16 @@ func downloadFile(url, contentHash string, fb func(length, downLen int64)) error
...
@@ -656,14 +649,16 @@ func downloadFile(url, contentHash string, fb func(length, downLen int64)) error
client
:=
new
(
http
.
Client
)
client
:=
new
(
http
.
Client
)
//get方法获取资源
//get方法获取资源
resp
,
err
:=
client
.
Get
(
url
)
resp
,
err
:=
client
.
Get
(
url
)
fmt
.
Println
(
url
)
log
.
Println
(
url
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Println
(
err
)
return
err
return
err
}
}
//读取服务器返回的文件大小
//读取服务器返回的文件大小
fsize
,
err
=
strconv
.
ParseInt
(
resp
.
Header
.
Get
(
"Content-Length"
),
10
,
32
)
fsize
,
err
=
strconv
.
ParseInt
(
resp
.
Header
.
Get
(
"Content-Length"
),
10
,
32
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
log
.
Println
(
err
)
return
err
}
}
//创建文件
//创建文件
...
@@ -671,10 +666,12 @@ func downloadFile(url, contentHash string, fb func(length, downLen int64)) error
...
@@ -671,10 +666,12 @@ func downloadFile(url, contentHash string, fb func(length, downLen int64)) error
file
,
err
:=
os
.
Create
(
"/data/files/"
+
contentHash
+
".zip"
)
file
,
err
:=
os
.
Create
(
"/data/files/"
+
contentHash
+
".zip"
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Println
(
err
)
return
err
return
err
}
}
defer
file
.
Close
()
defer
file
.
Close
()
if
resp
.
Body
==
nil
{
if
resp
.
Body
==
nil
{
log
.
Println
(
err
)
return
errors
.
New
(
"body is null"
)
return
errors
.
New
(
"body is null"
)
}
}
defer
resp
.
Body
.
Close
()
defer
resp
.
Body
.
Close
()
...
...
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