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
af9e1c25
Commit
af9e1c25
authored
Jun 04, 2021
by
Li Feifei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add width hegight
parent
23c588dd
Pipeline
#14946
failed with stages
in 42 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
56 additions
and
64 deletions
+56
-64
upload.go
upload/upload.go
+56
-64
No files found.
upload/upload.go
View file @
af9e1c25
...
@@ -9,8 +9,8 @@ import (
...
@@ -9,8 +9,8 @@ import (
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/astaxie/beego/orm"
"github.com/astaxie/beego/orm"
"github.com/chai2010/webp"
"github.com/chai2010/webp"
"github.com/rocketlaunchr/go-pool"
"github.com/xxjwxc/gowp/workpool"
"github.com/xxjwxc/gowp/workpool"
"github.com/rocketlaunchr/go-pool"
"image"
"image"
"image/jpeg"
"image/jpeg"
"image/png"
"image/png"
...
@@ -31,18 +31,15 @@ import (
...
@@ -31,18 +31,15 @@ import (
"time"
"time"
)
)
var
(
var
(
//WEBURL string = "http://offcn-live-svc"
//WEBURL string = "http://offcn-live-svc"
WEBURL
string
=
"https://test-live.offcncloud.com"
WEBURL
string
=
"https://test-live.offcncloud.com"
once
sync
.
Once
once
sync
.
Once
syncPool
pool
.
Pool
syncPool
pool
.
Pool
)
)
const
docUrl
string
=
"http://doc.offcncloud.com/"
const
docUrl
string
=
"http://doc.offcncloud.com/"
func
init
()
{
func
init
()
{
once
.
Do
(
func
()
{
once
.
Do
(
func
()
{
log
.
SetFlags
(
log
.
Lshortfile
|
log
.
LstdFlags
)
log
.
SetFlags
(
log
.
Lshortfile
|
log
.
LstdFlags
)
...
@@ -53,15 +50,13 @@ func init() {
...
@@ -53,15 +50,13 @@ func init() {
})
})
}
}
func
Upload
(
v
*
models
.
XyuSmallTempFiles
)
{
func
Upload
(
v
*
models
.
XyuSmallTempFiles
)
{
go
Down
(
v
)
go
Down
(
v
)
}
}
func
Down
(
v
*
models
.
XyuSmallTempFiles
)
{
func
Down
(
v
*
models
.
XyuSmallTempFiles
)
{
o
:=
orm
.
NewOrm
()
o
:=
orm
.
NewOrm
()
url
,
_
:=
Qurl
.
QueryUnescape
(
v
.
Url
)
url
,
_
:=
Qurl
.
QueryUnescape
(
v
.
Url
)
...
@@ -72,7 +67,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -72,7 +67,7 @@ func Down(v *models.XyuSmallTempFiles) {
objectName
:=
v
.
Url
[
strings
.
Index
(
v
.
Url
,
"com/"
)
+
4
:
]
objectName
:=
v
.
Url
[
strings
.
Index
(
v
.
Url
,
"com/"
)
+
4
:
]
// 文件以及存在就不需要下载
// 文件以及存在就不需要下载
if
_
,
err
:=
os
.
Stat
(
filePath
);
err
!=
nil
{
if
_
,
err
:=
os
.
Stat
(
filePath
);
err
!=
nil
{
// Get the data
// Get the data
resp
,
err
:=
http
.
Get
(
url
)
resp
,
err
:=
http
.
Get
(
url
)
...
@@ -174,9 +169,8 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -174,9 +169,8 @@ func Down(v *models.XyuSmallTempFiles) {
}
}
defer
fd
.
Close
()
defer
fd
.
Close
()
log
.
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
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -196,29 +190,28 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -196,29 +190,28 @@ func Down(v *models.XyuSmallTempFiles) {
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
if
_
,
ok
:=
maps
[
"FileSize"
];
!
ok
{
if
_
,
ok
:=
maps
[
"FileSize"
];
!
ok
{
log
.
Println
(
maps
)
log
.
Println
(
maps
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
}
if
_
,
ok
:=
maps
[
"FileSize"
]
.
(
float64
);
!
ok
{
log
.
Println
(
err
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
if
_
,
ok
:=
maps
[
"FileSize"
]
.
(
float64
);
!
ok
{
log
.
Println
(
err
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
}
room_file
[
"files_size"
]
=
strconv
.
Itoa
(
int
(
maps
[
"FileSize"
]
.
(
float64
)))
room_file
[
"files_size"
]
=
strconv
.
Itoa
(
int
(
maps
[
"FileSize"
]
.
(
float64
)))
link
:=
strings
.
Replace
(
v
.
Url
,
"xiaoyu-live.oss-cn-beijing-internal.aliyuncs.com"
,
"desktop.offcncloud.com"
,
-
1
)
link
:=
strings
.
Replace
(
v
.
Url
,
"xiaoyu-live.oss-cn-beijing-internal.aliyuncs.com"
,
"desktop.offcncloud.com"
,
-
1
)
room_file
[
"link"
]
=
link
room_file
[
"link"
]
=
link
wordFloat64
:=
getWords
(
maps
)
wordFloat64
:=
getWords
(
maps
)
room_file
[
"page_count"
]
=
wordFloat64
room_file
[
"page_count"
]
=
wordFloat64
downUrl
:=
fmt
.
Sprintf
(
"http://doc.offcncloud.com/?info=1&words=%v&ssl=1&furl=%s"
,
downUrl
:=
fmt
.
Sprintf
(
"http://doc.offcncloud.com/?info=1&words=%v&ssl=1&furl=%s"
,
wordFloat64
,
furl
)
wordFloat64
,
furl
)
ch
:=
make
(
chan
bool
)
ch
:=
make
(
chan
bool
)
go
func
()
{
go
func
()
{
err
:=
downloadFile
(
downUrl
,
contentHash
,
func
(
length
,
downLen
int64
)
{
err
:=
downloadFile
(
downUrl
,
contentHash
,
func
(
length
,
downLen
int64
)
{
})
})
if
err
==
nil
{
if
err
==
nil
{
...
@@ -230,20 +223,22 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -230,20 +223,22 @@ func Down(v *models.XyuSmallTempFiles) {
}()
}()
<-
ch
<-
ch
reader
,
err
:=
zip
.
OpenReader
(
"/data/files/"
+
contentHash
+
".zip"
)
reader
,
err
:=
zip
.
OpenReader
(
"/data/files/"
+
contentHash
+
".zip"
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Println
(
"5==="
,
err
)
log
.
Println
(
"5==="
,
err
)
UpdateFileError
(
"4"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
UpdateFileError
(
"4"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
Pool
:=
workpool
.
New
(
100
)
Pool
:=
workpool
.
New
(
100
)
var
imageInfos
[][]
interface
{}
for
_
,
file
:=
range
reader
.
File
{
for
_
,
file
:=
range
reader
.
File
{
Pool
.
DoWait
(
func
()
error
{
Pool
.
DoWait
(
func
()
error
{
log
.
Printf
(
"file = %s
\n
"
,
file
.
Name
)
log
.
Printf
(
"file = %s
\n
"
,
file
.
Name
)
var
err
error
var
err
error
for
i
:=
0
;
i
<
3
;
i
++
{
for
i
:=
0
;
i
<
3
;
i
++
{
if
err
=
pdfThumbnail
(
objectPath
,
file
,
bucket
);
err
==
nil
{
if
imageinfo
,
err
:=
pdfThumbnail
(
objectPath
,
file
,
bucket
);
err
==
nil
{
imageInfos
=
append
(
imageInfos
,
imageinfo
)
break
break
}
}
}
}
...
@@ -260,7 +255,6 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -260,7 +255,6 @@ func Down(v *models.XyuSmallTempFiles) {
defer
reader
.
Close
()
defer
reader
.
Close
()
go
func
()
{
go
func
()
{
err
:=
uploadPacked
(
bucket
,
filename
,
contentHash
,
objectPath
,
err
:=
uploadPacked
(
bucket
,
filename
,
contentHash
,
objectPath
,
wordFloat64
)
wordFloat64
)
...
@@ -284,17 +278,13 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -284,17 +278,13 @@ func Down(v *models.XyuSmallTempFiles) {
}
}
}
}
elapsed
:=
time
.
Since
(
t
)
elapsed
:=
time
.
Since
(
t
)
log
.
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"
)
return
return
}
}
func
webToken
()
(
*
http
.
Client
,
string
,
error
)
{
func
webToken
()
(
*
http
.
Client
,
string
,
error
)
{
...
@@ -309,7 +299,6 @@ func webToken() (*http.Client, string, error) {
...
@@ -309,7 +299,6 @@ func webToken() (*http.Client, string, error) {
Jar
:
jar
,
Jar
:
jar
,
}
}
payload
:=
strings
.
NewReader
(
"name=offcn&password=123123"
)
payload
:=
strings
.
NewReader
(
"name=offcn&password=123123"
)
req
,
err
:=
http
.
NewRequest
(
"POST"
,
WEBURL
+
"/web/login"
,
payload
)
req
,
err
:=
http
.
NewRequest
(
"POST"
,
WEBURL
+
"/web/login"
,
payload
)
...
@@ -328,7 +317,7 @@ func webToken() (*http.Client, string, error) {
...
@@ -328,7 +317,7 @@ func webToken() (*http.Client, string, error) {
bodys
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
bodys
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Println
(
"获取数据失败"
,
err
)
log
.
Println
(
"获取数据失败"
,
err
)
return
&
http
.
Client
{},
""
,
err
return
&
http
.
Client
{},
""
,
err
}
}
...
@@ -362,11 +351,11 @@ func webToken() (*http.Client, string, error) {
...
@@ -362,11 +351,11 @@ func webToken() (*http.Client, string, error) {
}
}
}
}
func
UpdateFileError
(
code
,
uuid
,
room_num
,
path
string
)
error
{
func
UpdateFileError
(
code
,
uuid
,
room_num
,
path
string
)
error
{
vv
:=
Qurl
.
Values
{}
vv
:=
Qurl
.
Values
{}
vv
.
Add
(
"code"
,
code
)
vv
.
Add
(
"code"
,
code
)
vv
.
Add
(
"uuid"
,
uuid
)
vv
.
Add
(
"uuid"
,
uuid
)
vv
.
Add
(
"room_num"
,
room_num
)
vv
.
Add
(
"room_num"
,
room_num
)
vv
.
Add
(
"path"
,
path
)
vv
.
Add
(
"path"
,
path
)
client
,
token
,
err
:=
webToken
()
client
,
token
,
err
:=
webToken
()
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -376,7 +365,7 @@ func UpdateFileError(code , uuid, room_num, path string) error {
...
@@ -376,7 +365,7 @@ func UpdateFileError(code , uuid, room_num, path string) error {
vv
.
Add
(
"_token"
,
token
)
vv
.
Add
(
"_token"
,
token
)
body
:=
vv
.
Encode
()
body
:=
vv
.
Encode
()
payload
:=
strings
.
NewReader
(
body
)
payload
:=
strings
.
NewReader
(
body
)
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
{
log
.
Println
(
err
)
log
.
Println
(
err
)
...
@@ -406,7 +395,7 @@ func UpdateFileError(code , uuid, room_num, path string) error {
...
@@ -406,7 +395,7 @@ func UpdateFileError(code , uuid, room_num, path string) error {
log
.
Println
(
"消息下发失败"
)
log
.
Println
(
"消息下发失败"
)
return
errors
.
New
(
"消息下发失败"
)
return
errors
.
New
(
"消息下发失败"
)
}
}
return
nil
return
nil
}
}
func
CreateFileDataBase
(
room_file
map
[
string
]
interface
{})
error
{
func
CreateFileDataBase
(
room_file
map
[
string
]
interface
{})
error
{
...
@@ -425,7 +414,7 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
...
@@ -425,7 +414,7 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
vv
.
Add
(
"_token"
,
token
)
vv
.
Add
(
"_token"
,
token
)
body
:=
vv
.
Encode
()
body
:=
vv
.
Encode
()
payload
:=
strings
.
NewReader
(
body
)
payload
:=
strings
.
NewReader
(
body
)
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
{
log
.
Println
(
err
)
log
.
Println
(
err
)
...
@@ -459,12 +448,11 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
...
@@ -459,12 +448,11 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
return
nil
return
nil
}
}
func
pdfThumbnail
(
objectPath
string
,
file
*
zip
.
File
,
bucket
*
oss
.
Bucket
)
([]
interface
{},
error
)
{
func
pdfThumbnail
(
objectPath
string
,
file
*
zip
.
File
,
bucket
*
oss
.
Bucket
)
error
{
fc
,
err
:=
file
.
Open
()
fc
,
err
:=
file
.
Open
()
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
nil
,
err
}
}
defer
fc
.
Close
()
defer
fc
.
Close
()
...
@@ -474,24 +462,20 @@ func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error {
...
@@ -474,24 +462,20 @@ func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error {
buf
:=
item
.
Item
.
(
*
bytes
.
Buffer
)
buf
:=
item
.
Item
.
(
*
bytes
.
Buffer
)
//defer debug.FreeOSMemory()
var
img
image
.
Image
var
img
image
.
Image
fileSuffix
:=
path
.
Ext
(
file
.
Name
)
//获取文件后缀
fileSuffix
:=
path
.
Ext
(
file
.
Name
)
//获取文件后缀
switch
fileSuffix
{
switch
fileSuffix
{
case
".png"
:
case
".png"
:
img
,
_
=
png
.
Decode
(
fc
)
img
,
_
=
png
.
Decode
(
fc
)
case
".jpeg"
:
case
".jpeg"
:
img
,
_
=
jpeg
.
Decode
(
fc
)
img
,
_
=
jpeg
.
Decode
(
fc
)
default
:
default
:
return
errors
.
New
(
"image ext is not found"
)
return
nil
,
errors
.
New
(
"image ext is not found"
)
}
}
if
err
=
webp
.
Encode
(
buf
,
img
,
&
webp
.
Options
{
Lossless
:
true
});
err
!=
nil
{
//var buf bytes.Buffer
return
nil
,
err
if
err
=
webp
.
Encode
(
buf
,
img
,
&
webp
.
Options
{
Lossless
:
true
});
err
!=
nil
{
return
err
}
}
r
:=
bytes
.
NewReader
(
buf
.
Bytes
())
r
:=
bytes
.
NewReader
(
buf
.
Bytes
())
...
@@ -502,28 +486,40 @@ func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error {
...
@@ -502,28 +486,40 @@ func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error {
filenameOnly
=
strings
.
Replace
(
filenameOnly
,
"p"
,
""
,
-
1
)
filenameOnly
=
strings
.
Replace
(
filenameOnly
,
"p"
,
""
,
-
1
)
fileName
:=
fmt
.
Sprintf
(
"%05s"
,
filenameOnly
)
+
".webp"
fileName
:=
fmt
.
Sprintf
(
"%05s"
,
filenameOnly
)
+
".webp"
return
bucket
.
PutObject
(
objectPathName
+
fileName
,
r
)
c
,
_
,
err
:=
image
.
DecodeConfig
(
fc
)
if
err
!=
nil
{
return
nil
,
err
}
var
imageInfo
[]
interface
{}
imageInfo
=
append
(
imageInfo
,
fileName
)
imageInfo
=
append
(
imageInfo
,
c
.
Width
)
imageInfo
=
append
(
imageInfo
,
c
.
Height
)
}
return
imageInfo
,
bucket
.
PutObject
(
objectPathName
+
fileName
,
r
)
}
func
uploadPacked
(
bucket
*
oss
.
Bucket
,
filename
,
contentHash
,
func
uploadPacked
(
bucket
*
oss
.
Bucket
,
filename
,
contentHash
,
objectPath
string
,
word
float64
)
error
{
objectPath
string
,
word
float64
,
imageInfos
[][]
interface
{}
)
error
{
type
packed
struct
{
type
packed
struct
{
FileName
string
`json:"fileName"`
FileName
string
`json:"fileName"`
Hash
string
`json:"hash"`
Hash
string
`json:"hash"`
ImagesName
[]
string
`json:"imagesName"`
ImagesName
[]
string
`json:"imagesName"`
OssImagesPath
string
`json:"ossImagesPath"`
OssImagesPath
string
`json:"ossImagesPath"`
ImageInfos
[][]
interface
{}
`json:"imageInfos"`
}
}
p
:=
packed
{
p
:=
packed
{
FileName
:
filename
,
FileName
:
filename
,
Hash
:
contentHash
,
Hash
:
contentHash
,
OssImagesPath
:
objectPath
+
"images/"
,
OssImagesPath
:
objectPath
+
"images/"
,
ImageInfos
:
imageInfos
,
}
}
for
i
:=
1
;
i
<=
int
(
word
);
i
++
{
for
i
:=
1
;
i
<=
int
(
word
);
i
++
{
p
.
ImagesName
=
append
(
p
.
ImagesName
,
fmt
.
Sprintf
(
"%05d"
,
i
)
+
".webp"
)
p
.
ImagesName
=
append
(
p
.
ImagesName
,
fmt
.
Sprintf
(
"%05d"
,
i
)
+
".webp"
)
}
}
log
.
Println
(
"imageInfos == "
,
imageInfos
)
data
,
err
:=
json
.
Marshal
(
p
)
data
,
err
:=
json
.
Marshal
(
p
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
@@ -537,7 +533,6 @@ func uploadPacked(bucket *oss.Bucket, filename, contentHash,
...
@@ -537,7 +533,6 @@ func uploadPacked(bucket *oss.Bucket, filename, contentHash,
return
nil
return
nil
}
}
func
getWords
(
maps
map
[
string
]
interface
{})
float64
{
func
getWords
(
maps
map
[
string
]
interface
{})
float64
{
if
word
,
ok
:=
maps
[
"SlideCount"
];
ok
{
if
word
,
ok
:=
maps
[
"SlideCount"
];
ok
{
return
word
.
(
float64
)
return
word
.
(
float64
)
...
@@ -587,7 +582,6 @@ func newOssClient() (*oss.Bucket, error) {
...
@@ -587,7 +582,6 @@ func newOssClient() (*oss.Bucket, error) {
return
bucket
,
nil
return
bucket
,
nil
}
}
func
downloadFile
(
url
,
contentHash
string
,
fb
func
(
length
,
downLen
int64
))
error
{
func
downloadFile
(
url
,
contentHash
string
,
fb
func
(
length
,
downLen
int64
))
error
{
var
(
var
(
fsize
int64
fsize
int64
...
@@ -611,9 +605,7 @@ func downloadFile(url, contentHash string, fb func(length, downLen int64)) error
...
@@ -611,9 +605,7 @@ 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
)
log
.
Println
(
err
)
return
err
return
err
...
...
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