文件上传一直显示 'No File Chosen'
File Upload keeps showing 'No File Chosen'
我有一个使用 BlazorInputFile 的简单文件上传。我可以添加一个文件,它会触发我指定的 onChange 函数,但是文件名从未出现在屏幕上,当我去提交表单时,它说它是空的。
形式:
<EditForm Model="@Item" OnValidSubmit="@SubmitForm">
<DataAnnotationsValidator />
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>File</label>
<InputFile OnChange="LoadFile"/>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-success">Save changes</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal" @onclick="() => Close()">Close</button>
</div>
<ValidationSummary />
</EditForm>
@code {
public FormItem Item = new FormItem();
private IFileListEntry UploadedFile;
// So on change it gets in here and I can see that we have a item uploaded
private async Task LoadFile(IFileListEntry[] files)
{
if (files.Count() != 0)
{
UploadedFile = files.FirstOrDefault();
}
this.StateHasChanged();
}
protected async Task SubmitForm(EditContext editContext)
{
}
}
Item
class有一个属性:
[Required]
public IFileListEntry File { get; set; }
我发现这可能是 BlazorInputFile 组件本身的问题,但我想知道是否还有其他人遇到过这个问题?
目前 运行 Blazor ASP.Net Core 3.1
我认为问题来自项目版本,因为 this document 说 blazor InputFile
适用于版本 5 但你的是 3.1
所以。看起来这是在组件的最后更新中添加的错误。
为了解决这个问题,我将文件的 CSS 设置为白色,并在调用的 LoadFile 函数中的按钮下方添加了文件名。这是一种 hacky 方式,但 atm 在更新/修复组件之前我看不到任何其他方式。
CSS:
input[type='file'] {
color: transparent;
}
组件中的全局变量:
private string FileName = "";
LoadFile函数的变化:
FileName = string.Concat("File: ",files.FirstOrDefault().Name);
我有一个使用 BlazorInputFile 的简单文件上传。我可以添加一个文件,它会触发我指定的 onChange 函数,但是文件名从未出现在屏幕上,当我去提交表单时,它说它是空的。
形式:
<EditForm Model="@Item" OnValidSubmit="@SubmitForm">
<DataAnnotationsValidator />
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>File</label>
<InputFile OnChange="LoadFile"/>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-success">Save changes</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal" @onclick="() => Close()">Close</button>
</div>
<ValidationSummary />
</EditForm>
@code {
public FormItem Item = new FormItem();
private IFileListEntry UploadedFile;
// So on change it gets in here and I can see that we have a item uploaded
private async Task LoadFile(IFileListEntry[] files)
{
if (files.Count() != 0)
{
UploadedFile = files.FirstOrDefault();
}
this.StateHasChanged();
}
protected async Task SubmitForm(EditContext editContext)
{
}
}
Item
class有一个属性:
[Required]
public IFileListEntry File { get; set; }
我发现这可能是 BlazorInputFile 组件本身的问题,但我想知道是否还有其他人遇到过这个问题?
目前 运行 Blazor ASP.Net Core 3.1
我认为问题来自项目版本,因为 this document 说 blazor InputFile
适用于版本 5 但你的是 3.1
所以。看起来这是在组件的最后更新中添加的错误。
为了解决这个问题,我将文件的 CSS 设置为白色,并在调用的 LoadFile 函数中的按钮下方添加了文件名。这是一种 hacky 方式,但 atm 在更新/修复组件之前我看不到任何其他方式。
CSS:
input[type='file'] {
color: transparent;
}
组件中的全局变量:
private string FileName = "";
LoadFile函数的变化:
FileName = string.Concat("File: ",files.FirstOrDefault().Name);