Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
37d03ff893
4 changed files with 58 additions and 3 deletions
|
@ -33,6 +33,8 @@ Below are the detailed changes in this version.
|
|||
* [Improve data sync conflicts merging](https://github.com/siyuan-note/siyuan/issues/9741)
|
||||
* [`Alt+O`, `Alt+B` and `Alt+G` can be used in read-only mode](https://github.com/siyuan-note/siyuan/issues/9745)
|
||||
* [Mentions and the last item in the doc tree cannot be clicked when the bottom bar hover window is on](https://github.com/siyuan-note/siyuan/issues/9750)
|
||||
* [Make setting window draggable](https://github.com/siyuan-note/siyuan/issues/9752)
|
||||
* [Add `Move to New Window` hotkey](https://github.com/siyuan-note/siyuan/issues/9754)
|
||||
|
||||
### Bugfix
|
||||
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
* [改進資料同步衝突合併](https://github.com/siyuan-note/siyuan/issues/9741)
|
||||
* [支援在唯讀模式下使用 `Alt+O`, `Alt+B` 和 `Alt+G`](https://github.com/siyuan-note/siyuan/issues/9745)
|
||||
* [提及和文檔樹面板最後一項在底部停靠欄懸浮時無法點擊](https://github.com/siyuan-note/siyuan/issues/9750)
|
||||
* [設定視窗支援拖曳](https://github.com/siyuan-note/siyuan/issues/9752)
|
||||
* [新增 `移動到新視窗` 快捷鍵](https://github.com/siyuan-note/siyuan/issues/9754)
|
||||
|
||||
### 修復缺陷
|
||||
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
* [改进数据同步冲突合并](https://github.com/siyuan-note/siyuan/issues/9741)
|
||||
* [支持在只读模式下使用 `Alt+O`, `Alt+B` 和 `Alt+G`](https://github.com/siyuan-note/siyuan/issues/9745)
|
||||
* [提及和文档树面板最后一项在底部停靠栏悬浮时无法点击](https://github.com/siyuan-note/siyuan/issues/9750)
|
||||
* [设置窗口支持拖拽](https://github.com/siyuan-note/siyuan/issues/9752)
|
||||
* [添加 `移动到新窗口` 快捷键](https://github.com/siyuan-note/siyuan/issues/9754)
|
||||
|
||||
### 修复缺陷
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ import (
|
|||
"io"
|
||||
"math"
|
||||
"net/http"
|
||||
"net/textproto"
|
||||
"net/url"
|
||||
"strings"
|
||||
"time"
|
||||
|
@ -31,19 +32,67 @@ import (
|
|||
"github.com/88250/gulu"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/imroc/req/v3"
|
||||
"github.com/siyuan-note/logging"
|
||||
"github.com/siyuan-note/siyuan/kernel/util"
|
||||
)
|
||||
|
||||
type File struct {
|
||||
Filename string
|
||||
Header textproto.MIMEHeader
|
||||
Size int64
|
||||
Content string
|
||||
}
|
||||
|
||||
type MultipartForm struct {
|
||||
Value map[string][]string
|
||||
File map[string][]File
|
||||
}
|
||||
|
||||
func echo(c *gin.Context) {
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
||||
password, passwordSet := c.Request.URL.User.Password()
|
||||
var (
|
||||
password string
|
||||
passwordSet bool
|
||||
multipartForm *MultipartForm
|
||||
rawData any
|
||||
)
|
||||
|
||||
password, passwordSet = c.Request.URL.User.Password()
|
||||
|
||||
if form, err := c.MultipartForm(); nil != err || nil == form {
|
||||
multipartForm = nil
|
||||
} else {
|
||||
multipartForm = &MultipartForm{
|
||||
Value: form.Value,
|
||||
File: map[string][]File{},
|
||||
}
|
||||
for k, handlers := range form.File {
|
||||
files := make([]File, len(handlers))
|
||||
multipartForm.File[k] = files
|
||||
for i, handler := range handlers {
|
||||
files[i].Filename = handler.Filename
|
||||
files[i].Header = handler.Header
|
||||
files[i].Size = handler.Size
|
||||
if file, err := handler.Open(); nil != err {
|
||||
logging.LogWarnf("echo open form [%s] file [%s] error: %s", k, handler.Filename, err.Error())
|
||||
} else {
|
||||
content := make([]byte, handler.Size)
|
||||
if _, err := file.Read(content); nil != err {
|
||||
logging.LogWarnf("echo read form [%s] file [%s] error: %s", k, handler.Filename, err.Error())
|
||||
} else {
|
||||
files[i].Content = base64.StdEncoding.EncodeToString(content)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var rawData any
|
||||
if data, err := c.GetRawData(); nil == err {
|
||||
rawData = base64.StdEncoding.EncodeToString(data)
|
||||
} else {
|
||||
logging.LogWarnf("echo get raw data error: %s", err.Error())
|
||||
rawData = nil
|
||||
}
|
||||
c.Request.ParseForm()
|
||||
|
@ -73,7 +122,7 @@ func echo(c *gin.Context) {
|
|||
"Host": c.Request.Host,
|
||||
"Form": c.Request.Form,
|
||||
"PostForm": c.Request.PostForm,
|
||||
"MultipartForm": c.Request.MultipartForm,
|
||||
"MultipartForm": multipartForm,
|
||||
"Trailer": c.Request.Trailer,
|
||||
"RemoteAddr": c.Request.RemoteAddr,
|
||||
"TLS": c.Request.TLS,
|
||||
|
|
Loading…
Add table
Reference in a new issue