Skip to content

Commit e14cf45

Browse files
authored
feat(Editor): add return value on file upload callback (#534)
* feat: 上传回调方法增加返回值 * chore: bump version 9.0.6
1 parent 0975ebd commit e14cf45

3 files changed

Lines changed: 12 additions & 11 deletions

File tree

src/components/BootstrapBlazor.SummerNote/BootstrapBlazor.SummerNote.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>9.0.5</Version>
4+
<Version>9.0.6</Version>
55
</PropertyGroup>
66

77
<PropertyGroup>

src/components/BootstrapBlazor.SummerNote/Components/Editor/Editor.razor.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public partial class Editor
6464
/// 获得/设置 Editor 组件内上传文件时回调此方法
6565
/// </summary>
6666
[Parameter]
67-
public Func<EditorUploadFile, Task>? OnFileUpload { get; set; }
67+
public Func<EditorUploadFile, Task<string>>? OnFileUpload { get; set; }
6868

6969
private bool _lastShowSubmit = true;
7070

@@ -270,14 +270,16 @@ public async Task<string> ClickPluginItem(string pluginItemName)
270270
/// <param name="size"></param>
271271
/// <param name="stream"></param>
272272
[JSInvokable]
273-
public async Task ImageUpload(string name, string contentType, long size, IJSStreamReference stream)
273+
public async Task<string> ImageUpload(string name, string contentType, long size, IJSStreamReference stream)
274274
{
275-
var data = await stream.OpenReadStreamAsync(size);
275+
string? ret = null;
276+
await using var data = await stream.OpenReadStreamAsync(size);
276277
var file = new EditorUploadFile(name, contentType, size, data);
277278
if (OnFileUpload != null)
278279
{
279-
await OnFileUpload(file);
280+
ret = await OnFileUpload(file);
280281
}
282+
return ret ?? "";
281283
}
282284

283285
/// <summary>

src/components/BootstrapBlazor.SummerNote/Components/Editor/Editor.razor.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,16 @@ export async function init(id, invoker, methodGetPluginAttrs, methodClickPluginI
5151
editor.files = files
5252
for (let i = 0; i < files.length; i++) {
5353
const file = files[i];
54-
const image = createImage(file);
55-
editor.$editor.summernote('insertNode', image);
56-
5754
const buffer = await file.arrayBuffer();
5855
const stream = DotNet.createJSStreamReference(buffer);
59-
await editor.invoker.invokeMethodAsync('ImageUpload',
56+
const url = await editor.invoker.invokeMethodAsync('ImageUpload',
6057
file.name,
6158
file.type || 'application/octet-stream',
6259
file.size,
6360
stream
6461
)
62+
const image = createImage(file, url);
63+
editor.$editor.summernote('insertNode', image);
6564
}
6665
}
6766
}
@@ -220,9 +219,9 @@ export function dispose(id) {
220219
}
221220
}
222221

223-
const createImage = file => {
222+
const createImage = (file, url) => {
224223
const element = document.createElement('img');
225-
element.src = URL.createObjectURL(file);
224+
element.src = url || URL.createObjectURL(file);
226225
return element;
227226
}
228227

0 commit comments

Comments
 (0)