Having trouble getting help?
Contact Support
Contact Support
Auto save document in React Document editor component
29 Mar 20253 minutes to read
In this article, we are going to see how to autosave the document to server. You can automatically save the edited content in regular intervals of time. It helps reduce the risk of data loss by saving an open document automatically at customized intervals.
The following example illustrates how to auto save the document in server.
- In the client-side, using content change event, we can automatically save the edited content in regular intervals of time. Based on
contentChanged
boolean, the document send as Docx format to server-side usingsaveAsBlob
method.
import * as ReactDOM from 'react-dom';
import * as React from 'react';
import {
DocumentEditorContainerComponent,
Toolbar,
} from '@syncfusion/ej2-react-documenteditor';
DocumentEditorContainerComponent.Inject(Toolbar);
function App() {
let container;
let contentChanged = false;
function onCreate() {
setInterval(() => {
if (contentChanged) {
//You can save the document as below
container.documentEditor.saveAsBlob('Docx').then((blob: Blob) => {
console.log('Saved sucessfully');
let exportedDocument: Blob = blob;
//Now, save the document where ever you want.
let formData: FormData = new FormData();
formData.append('fileName', 'sample.docx');
formData.append('data', exportedDocument);
/* tslint:disable */
var req = new XMLHttpRequest();
// Replace your running Url here
req.open(
'POST',
'http://localhost:62869/api/documenteditor/AutoSave',
true
);
req.onreadystatechange = () => {
if (req.readyState === 4) {
if (req.status === 200 || req.status === 304) {
console.log('Saved sucessfully');
}
}
};
req.send(formData);
});
contentChanged = false;
}
}, 1000);
}
function onContentChange() {
contentChanged = true;
}
return (
<DocumentEditorContainerComponent
id="container"
ref={(scope) => {
container = scope;
}}
height={'590px'}
serviceUrl="https://ej2services.syncfusion.com/production/web-services/api/documenteditor/"
enableToolbar={true} created={onCreate} contentChange={onContentChange}
/>
);
}
export default App;
ReactDOM.render(<App />, document.getElementById('sample'));
-
In server-side, Receives the stream content from client-side and process it to save the document in aws s3. Add Web API in controller file like below to save the document in aws s3.
[AcceptVerbs("Post")] [HttpPost] [EnableCors("AllowAllOrigins")] [Route("AutoSave")] public string AutoSave() { IFormFile file = HttpContext.Request.Form.Files[0]; Stream stream = new MemoryStream(); file.CopyTo(stream); //Save the stream to database or server as per the requirement. stream.Close(); return "Sucess"; }