Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
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
Vũ Hoàng Anh
canifa_note
Commits
5fc0fb24
Unverified
Commit
5fc0fb24
authored
May 15, 2022
by
STEVEN
Committed by
GitHub
May 15, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: upload resource by openid api (#55)
parent
615cec30
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
62 additions
and
5 deletions
+62
-5
resource.go
server/resource.go
+1
-1
webhook.go
server/webhook.go
+59
-0
resourceService.ts
web/src/services/resourceService.ts
+2
-4
No files found.
server/resource.go
View file @
5fc0fb24
...
@@ -15,7 +15,7 @@ func (s *Server) registerResourceRoutes(g *echo.Group) {
...
@@ -15,7 +15,7 @@ func (s *Server) registerResourceRoutes(g *echo.Group) {
g
.
POST
(
"/resource"
,
func
(
c
echo
.
Context
)
error
{
g
.
POST
(
"/resource"
,
func
(
c
echo
.
Context
)
error
{
userID
:=
c
.
Get
(
getUserIDContextKey
())
.
(
int
)
userID
:=
c
.
Get
(
getUserIDContextKey
())
.
(
int
)
err
:=
c
.
Request
()
.
ParseMultipartForm
(
5
<<
20
)
err
:=
c
.
Request
()
.
ParseMultipartForm
(
64
<<
20
)
if
err
!=
nil
{
if
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusBadRequest
,
"Upload file overload max size"
)
.
SetInternal
(
err
)
return
echo
.
NewHTTPError
(
http
.
StatusBadRequest
,
"Upload file overload max size"
)
.
SetInternal
(
err
)
}
}
...
...
server/webhook.go
View file @
5fc0fb24
...
@@ -3,6 +3,7 @@ package server
...
@@ -3,6 +3,7 @@ package server
import
(
import
(
"encoding/json"
"encoding/json"
"fmt"
"fmt"
"io/ioutil"
"memos/api"
"memos/api"
"net/http"
"net/http"
"strconv"
"strconv"
...
@@ -84,6 +85,64 @@ func (s *Server) registerWebhookRoutes(g *echo.Group) {
...
@@ -84,6 +85,64 @@ func (s *Server) registerWebhookRoutes(g *echo.Group) {
return
nil
return
nil
})
})
g
.
POST
(
"/:openId/resource"
,
func
(
c
echo
.
Context
)
error
{
openID
:=
c
.
Param
(
"openId"
)
userFind
:=
&
api
.
UserFind
{
OpenID
:
&
openID
,
}
user
,
err
:=
s
.
UserService
.
FindUser
(
userFind
)
if
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to find user by open_id"
)
.
SetInternal
(
err
)
}
if
user
==
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusNotFound
,
fmt
.
Sprintf
(
"User openId not found: %s"
,
openID
))
}
if
err
:=
c
.
Request
()
.
ParseMultipartForm
(
64
<<
20
);
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusBadRequest
,
"Upload file overload max size"
)
.
SetInternal
(
err
)
}
file
,
err
:=
c
.
FormFile
(
"file"
)
if
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusBadRequest
,
"Upload file not found"
)
.
SetInternal
(
err
)
}
filename
:=
file
.
Filename
filetype
:=
file
.
Header
.
Get
(
"Content-Type"
)
size
:=
file
.
Size
src
,
err
:=
file
.
Open
()
if
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to open file"
)
.
SetInternal
(
err
)
}
defer
src
.
Close
()
fileBytes
,
err
:=
ioutil
.
ReadAll
(
src
)
if
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to read file"
)
.
SetInternal
(
err
)
}
resourceCreate
:=
&
api
.
ResourceCreate
{
Filename
:
filename
,
Type
:
filetype
,
Size
:
size
,
Blob
:
fileBytes
,
CreatorID
:
user
.
ID
,
}
resource
,
err
:=
s
.
ResourceService
.
CreateResource
(
resourceCreate
)
if
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to create resource"
)
.
SetInternal
(
err
)
}
c
.
Response
()
.
Header
()
.
Set
(
echo
.
HeaderContentType
,
echo
.
MIMEApplicationJSONCharsetUTF8
)
if
err
:=
json
.
NewEncoder
(
c
.
Response
()
.
Writer
)
.
Encode
(
composeResponse
(
resource
));
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to encode resource response"
)
.
SetInternal
(
err
)
}
return
nil
})
g
.
GET
(
"/r/:resourceId/:filename"
,
func
(
c
echo
.
Context
)
error
{
g
.
GET
(
"/r/:resourceId/:filename"
,
func
(
c
echo
.
Context
)
error
{
resourceID
,
err
:=
strconv
.
Atoi
(
c
.
Param
(
"resourceId"
))
resourceID
,
err
:=
strconv
.
Atoi
(
c
.
Param
(
"resourceId"
))
if
err
!=
nil
{
if
err
!=
nil
{
...
...
web/src/services/resourceService.ts
View file @
5fc0fb24
...
@@ -9,14 +9,12 @@ class ResourceService {
...
@@ -9,14 +9,12 @@ class ResourceService {
public
async
upload
(
file
:
File
)
{
public
async
upload
(
file
:
File
)
{
const
{
name
:
filename
,
size
}
=
file
;
const
{
name
:
filename
,
size
}
=
file
;
if
(
size
>
5
<<
20
)
{
if
(
size
>
64
<<
20
)
{
return
Promise
.
reject
(
"overload max size:
5Mb
"
);
return
Promise
.
reject
(
"overload max size:
8MB
"
);
}
}
const
formData
=
new
FormData
();
const
formData
=
new
FormData
();
formData
.
append
(
"file"
,
file
,
filename
);
formData
.
append
(
"file"
,
file
,
filename
);
const
data
=
await
api
.
uploadFile
(
formData
);
const
data
=
await
api
.
uploadFile
(
formData
);
return
data
;
return
data
;
...
...
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