!1288 优化:加强文件MD5校验

pull/1288/MERGE
ZoeLeeFZ 4 years ago committed by ChenX
parent 3f80af6183
commit 4964052565

@ -31,7 +31,7 @@ export class Command_Insert implements Command
if (state.Status !== ModalState.Ok || !finfo)
return;
let fileData = await fileServer.GetFileInfo(finfo.file_id, finfo.code);
let fileData = await fileServer.GetFileInfo(finfo.file_id);
if (fileData)
{

@ -24,10 +24,9 @@ export class ReOpen implements Command
if (fileServer.m_CurFileId)
{
let id = fileServer.m_CurFileId;
let md5 = fileServer.CurrentFileMd5;
app.CreateDocument();
fileServer.Clear();
fileServer.OpenFile(id, md5);
fileServer.OpenFile(id);
}
}
}

@ -69,6 +69,7 @@ export const FileUrls = {
update: CURRENT_HOST + "/CAD-fileUpdate",
move: CURRENT_HOST + "/CAD-fileMove",
copy: CURRENT_HOST + "/CAD-fileCopy",
preDetail: CURRENT_HOST + "/CAD-filePreDetail",
};
export const TemplateUrls = {
create: CURRENT_HOST + "/CAD-moduleCreate",

@ -78,8 +78,16 @@ export class FileServer extends Singleton
app.CreateDocument();
return true;
}
async OpenFile(fid: string, md5: string = "")
async GetFileMD5(fid: string): Promise<string | undefined>
{
let codeRes = await PostJson(FileUrls.preDetail, { file_id: fid });
if (codeRes.err_code === RequestStatus.Ok)
return codeRes.files.code;
return undefined;
}
async OpenFile(fid: string)
{
let md5 = await this.GetFileMD5(fid);
if (this.m_CurFileId !== fid || this.CurrentFileMd5 !== md5)
{
if (!app.Saved)
@ -120,13 +128,18 @@ export class FileServer extends Singleton
}
return [];
}
async GetFileInfo(fid: string, md5: string): Promise<{ name: string; file?: string; code: string; }>
async GetFileInfo(fid: string, code?: string): Promise<{ name: string; file?: string; code: string; }>
{
if (!code)
code = await this.GetFileMD5(fid);
if (!code) return null;
let store = await IndexedDbStore.CADStore();
let fileCache = await store.Get(StoreName.Dwg, GetIndexDBID(fid));
if (fileCache?.code === md5 && fileCache?.file)
if (fileCache?.code === code && fileCache?.file)
{
return fileCache;
}

@ -21,7 +21,7 @@ export class ContentComponent extends React.Component<{ store?: TopPanelStore; }
this.props.store.openMain = false;
this.props.store.editoring = true;
};
handleOpenFile = async (fid: string, md5: string) =>
handleOpenFile = async (fid: string) =>
{
this.props.store.openMain = false;
this.props.store.editoring = true;
@ -30,7 +30,7 @@ export class ContentComponent extends React.Component<{ store?: TopPanelStore; }
timeout: 0,
intent: Intent.PRIMARY
}, 'openfile');
await (FileServer.GetInstance() as FileServer).OpenFile(fid, md5);
await (FileServer.GetInstance() as FileServer).OpenFile(fid);
AppToaster.show({
message: "加载完成",
timeout: 1000,
@ -117,7 +117,7 @@ export class ContentComponent extends React.Component<{ store?: TopPanelStore; }
<div className="grip-list">
{
store.m_FileList.slice(0, 4).map(file => <div
onClick={() => this.handleOpenFile(file.file_id, file.code)}
onClick={() => this.handleOpenFile(file.file_id)}
>
<div>
<img src={`${CURRENT_HOST}/${file.logo}`} alt="" />

@ -29,7 +29,7 @@ export interface IFileListProps
@observer
export class FileList extends React.Component<IFileListProps, {}> {
@observable isShowSize = false;
handleOpenFile = async (fid: string, md5: string) =>
handleOpenFile = async (fid: string) =>
{
this.props.store.m_FileManageOpen = false;
AppToaster.show({
@ -37,7 +37,7 @@ export class FileList extends React.Component<IFileListProps, {}> {
timeout: 0
}, 'openfile');
let server = FileServer.GetInstance() as FileServer;
let status = await server.OpenFile(fid, md5);
let status = await server.OpenFile(fid);
AppToaster.show({
message: status ? "加载完成" : "图纸打开失败",
timeout: 3000,
@ -158,7 +158,7 @@ export class FileList extends React.Component<IFileListProps, {}> {
small
text="打开"
intent={Intent.SUCCESS}
onClick={() => this.handleOpenFile(file.file_id, file.code)}
onClick={() => this.handleOpenFile(file.file_id)}
/>
}
renderOtherElement={(data) =>

Loading…
Cancel
Save