feat: 查看文件详情解除二进制文件限制 (#5696)
Some checks failed
Build Test / build-linux-binary (push) Failing after -6m12s
Build / SonarCloud (push) Failing after -6m14s
sync2gitee / repo-sync (push) Failing after -6m16s

This commit is contained in:
2024-07-05 18:13:08 +08:00 committed by GitHub
parent 2e8403347a
commit 0d3e834b37
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 14 additions and 6 deletions

View file

@ -11,6 +11,7 @@ type FileOption struct {
type FileContentReq struct { type FileContentReq struct {
Path string `json:"path" validate:"required"` Path string `json:"path" validate:"required"`
IsDetail bool `json:"isDetail"`
} }
type SearchUploadWithPage struct { type SearchUploadWithPage struct {

View file

@ -290,6 +290,7 @@ func (f *FileService) GetContent(op request.FileContentReq) (response.FileInfo,
info, err := files.NewFileInfo(files.FileOption{ info, err := files.NewFileInfo(files.FileOption{
Path: op.Path, Path: op.Path,
Expand: true, Expand: true,
IsDetail: op.IsDetail,
}) })
if err != nil { if err != nil {
return response.FileInfo{}, err return response.FileInfo{}, err

View file

@ -44,6 +44,7 @@ type FileInfo struct {
Items []*FileInfo `json:"items"` Items []*FileInfo `json:"items"`
ItemTotal int `json:"itemTotal"` ItemTotal int `json:"itemTotal"`
FavoriteID uint `json:"favoriteID"` FavoriteID uint `json:"favoriteID"`
IsDetail bool `json:"isDetail"`
} }
type FileOption struct { type FileOption struct {
@ -57,6 +58,7 @@ type FileOption struct {
PageSize int `json:"pageSize"` PageSize int `json:"pageSize"`
SortBy string `json:"sortBy"` SortBy string `json:"sortBy"`
SortOrder string `json:"sortOrder"` SortOrder string `json:"sortOrder"`
IsDetail bool `json:"isDetail"`
} }
type FileSearchInfo struct { type FileSearchInfo struct {
@ -89,6 +91,7 @@ func NewFileInfo(op FileOption) (*FileInfo, error) {
Gid: strconv.FormatUint(uint64(info.Sys().(*syscall.Stat_t).Gid), 10), Gid: strconv.FormatUint(uint64(info.Sys().(*syscall.Stat_t).Gid), 10),
Group: GetGroup(info.Sys().(*syscall.Stat_t).Gid), Group: GetGroup(info.Sys().(*syscall.Stat_t).Gid),
MimeType: GetMimeType(op.Path), MimeType: GetMimeType(op.Path),
IsDetail: op.IsDetail,
} }
favoriteRepo := repo.NewIFavoriteRepo() favoriteRepo := repo.NewIFavoriteRepo()
favorite, _ := favoriteRepo.GetFirst(favoriteRepo.WithByPath(op.Path)) favorite, _ := favoriteRepo.GetFirst(favoriteRepo.WithByPath(op.Path))
@ -322,9 +325,11 @@ func (f *FileInfo) getContent() error {
if err != nil { if err != nil {
return nil return nil
} }
if !f.IsDetail {
if len(cByte) > 0 && DetectBinary(cByte) { if len(cByte) > 0 && DetectBinary(cByte) {
return buserr.New(constant.ErrFileCanNotRead) return buserr.New(constant.ErrFileCanNotRead)
} }
}
f.Content = string(cByte) f.Content = string(cByte)
return nil return nil
} }

View file

@ -33,6 +33,7 @@ export namespace File {
containSub?: boolean; containSub?: boolean;
sortBy?: string; sortBy?: string;
sortOrder?: string; sortOrder?: string;
isDetail?: boolean;
} }
export interface SearchUploadInfo extends ReqPage { export interface SearchUploadInfo extends ReqPage {

View file

@ -56,7 +56,7 @@ const handleClose = () => {
const acceptParams = async (params: InfoProps): Promise<void> => { const acceptParams = async (params: InfoProps): Promise<void> => {
props.value = params; props.value = params;
GetFileContent({ path: params.path, expand: false, page: 1, pageSize: 1 }).then((res) => { GetFileContent({ path: params.path, expand: false, page: 1, pageSize: 1, isDetail: true }).then((res) => {
data.value = res.data; data.value = res.data;
open.value = true; open.value = true;
}); });