文件 读取 和 保存 api 调整
实现 markdown 文件读写
This commit is contained in:
parent
d96232128a
commit
787db345cd
@ -8,10 +8,15 @@ export default http;
|
||||
|
||||
export interface ReadFileParams {
|
||||
chunkSize?: number
|
||||
offset?: number,
|
||||
offset?: number
|
||||
path: string
|
||||
}
|
||||
|
||||
export interface SaveFileParams {
|
||||
fileName: string
|
||||
data: Blob
|
||||
}
|
||||
|
||||
export class Api {
|
||||
server:string
|
||||
constructor(server:string) {
|
||||
@ -19,10 +24,17 @@ export class Api {
|
||||
}
|
||||
|
||||
readFile(params: ReadFileParams){
|
||||
return http.get(`${this.server}/s/file/`,{
|
||||
return http.get(`${this.server}/s/file/get`,{
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
saveFile(params: SaveFileParams){
|
||||
return http.postForm(`${this.server}/s/file/save`,{
|
||||
fileName: params.fileName,
|
||||
fileContent: params.data
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
let api = new Api("")
|
||||
|
@ -24,8 +24,9 @@ import tableMergedCell from "@toast-ui/editor-plugin-table-merged-cell"
|
||||
import uml from "@toast-ui/editor-plugin-uml"
|
||||
|
||||
import {useI18n} from "vue-i18n";
|
||||
import {OpenFileDialog} from "../../../wailsjs/go/core/App";
|
||||
import {OpenFileDialog, SaveFileDialog} from "../../../wailsjs/go/core/App";
|
||||
import {useApi} from "@/api";
|
||||
import {ElMessage} from "element-plus";
|
||||
|
||||
const emit = defineEmits([
|
||||
"update:modelValue"
|
||||
@ -126,11 +127,43 @@ function openFile(){
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function saveFile(){
|
||||
SaveFileDialog({
|
||||
title: "保存 markdown",
|
||||
filters: [
|
||||
{
|
||||
displayName: "Markdown",
|
||||
pattern: "*.md;*.markdown"
|
||||
}
|
||||
]
|
||||
}).then(path=>{
|
||||
console.log(path)
|
||||
|
||||
if(!path){
|
||||
return
|
||||
}
|
||||
|
||||
useApi().saveFile({
|
||||
fileName: path,
|
||||
data: new Blob([editor.getMarkdown()], {
|
||||
type: 'text/plain'
|
||||
})
|
||||
}).then(resp=>{
|
||||
let res = resp.data
|
||||
if(res.code === 200){
|
||||
ElMessage.success(res.data)
|
||||
} else {
|
||||
ElMessage.error(res.msg)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<el-button type="primary" @click="openFile">打开</el-button>
|
||||
<el-button type="success">保存</el-button>
|
||||
<el-button type="success" @click="saveFile">保存</el-button>
|
||||
<div ref="editorRef" class="overscroll-none"/>
|
||||
</template>
|
||||
|
||||
|
@ -55,7 +55,7 @@ func GetPath(ctx *gin.Context) {
|
||||
// @Accept json
|
||||
// @Produce octet-stream
|
||||
// @Param vo query controller.GetFileDto true "获取文件"
|
||||
// @Router /file/ [get]
|
||||
// @Router /file/get [get]
|
||||
func GetFile(ctx *gin.Context) {
|
||||
dto := &GetFileDto{}
|
||||
err := ctx.BindQuery(dto)
|
||||
@ -86,3 +86,27 @@ func GetFile(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// SaveFile
|
||||
// @Summary 保存文件
|
||||
// @Description 保存文件
|
||||
// @Tags File
|
||||
// @Accept multipart/form-data
|
||||
// @Produce json
|
||||
// @Param fileContent formData file true "文件内容"
|
||||
// @Param fileName formData string true "文件名"
|
||||
// @Router /file/save [get]
|
||||
func SaveFile(ctx *gin.Context) {
|
||||
// 1.获取文件名
|
||||
fileName := ctx.PostForm("fileName")
|
||||
|
||||
// 2.获取文件内容
|
||||
fileContent, _ := ctx.FormFile("fileContent")
|
||||
err := ctx.SaveUploadedFile(fileContent, fileName)
|
||||
if err != nil {
|
||||
ctx.JSON(500, errorx.NewDefaultError(err.Error()))
|
||||
return
|
||||
} else {
|
||||
ctx.JSON(200, response.NewResponse(fmt.Sprintf("保存成功")))
|
||||
}
|
||||
}
|
||||
|
@ -171,7 +171,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/file/": {
|
||||
"/file/get": {
|
||||
"get": {
|
||||
"description": "获取文件",
|
||||
"consumes": [
|
||||
@ -260,6 +260,38 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/file/save": {
|
||||
"get": {
|
||||
"description": "保存文件",
|
||||
"consumes": [
|
||||
"multipart/form-data"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"File"
|
||||
],
|
||||
"summary": "保存文件",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "file",
|
||||
"description": "文件内容",
|
||||
"name": "fileContent",
|
||||
"in": "formData",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "文件名",
|
||||
"name": "fileName",
|
||||
"in": "formData",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/wol/wakeup": {
|
||||
"post": {
|
||||
"description": "wol 唤醒",
|
||||
|
@ -164,7 +164,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/file/": {
|
||||
"/file/get": {
|
||||
"get": {
|
||||
"description": "获取文件",
|
||||
"consumes": [
|
||||
@ -253,6 +253,38 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/file/save": {
|
||||
"get": {
|
||||
"description": "保存文件",
|
||||
"consumes": [
|
||||
"multipart/form-data"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"File"
|
||||
],
|
||||
"summary": "保存文件",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "file",
|
||||
"description": "文件内容",
|
||||
"name": "fileContent",
|
||||
"in": "formData",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "文件名",
|
||||
"name": "fileName",
|
||||
"in": "formData",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"responses": {}
|
||||
}
|
||||
},
|
||||
"/wol/wakeup": {
|
||||
"post": {
|
||||
"description": "wol 唤醒",
|
||||
|
@ -157,7 +157,7 @@ paths:
|
||||
summary: 错误处理
|
||||
tags:
|
||||
- Error
|
||||
/file/:
|
||||
/file/get:
|
||||
get:
|
||||
consumes:
|
||||
- application/json
|
||||
@ -214,6 +214,28 @@ paths:
|
||||
summary: 获取文件路径
|
||||
tags:
|
||||
- File
|
||||
/file/save:
|
||||
get:
|
||||
consumes:
|
||||
- multipart/form-data
|
||||
description: 保存文件
|
||||
parameters:
|
||||
- description: 文件内容
|
||||
in: formData
|
||||
name: fileContent
|
||||
required: true
|
||||
type: file
|
||||
- description: 文件名
|
||||
in: formData
|
||||
name: fileName
|
||||
required: true
|
||||
type: string
|
||||
produces:
|
||||
- application/json
|
||||
responses: {}
|
||||
summary: 保存文件
|
||||
tags:
|
||||
- File
|
||||
/wol/wakeup:
|
||||
post:
|
||||
consumes:
|
||||
|
@ -26,8 +26,9 @@ func setupConfigRouter(g *gin.RouterGroup) {
|
||||
|
||||
func setupFileRouter(g *gin.RouterGroup) {
|
||||
file := g.Group("/file")
|
||||
file.GET("/", controller.GetFile)
|
||||
file.GET("/get", controller.GetFile)
|
||||
file.GET("/path", controller.GetPath)
|
||||
file.POST("/save", controller.SaveFile)
|
||||
}
|
||||
|
||||
func setupWolRouter(g *gin.RouterGroup) {
|
||||
|
3
pkg/server/swag.go
Normal file
3
pkg/server/swag.go
Normal file
@ -0,0 +1,3 @@
|
||||
package server
|
||||
|
||||
//go:generate swag init -pd ./
|
Loading…
Reference in New Issue
Block a user