我用这段代码上传文件到blazor服务器项目
private async Task uploadFile(InputFileChangeEventArgs e, ClaimDetailDTO claimDetail)//Uploads file to server
{
var file = e.File;
if (file.Size > maxFileSize)
{
FilePopupVisible = true;
}
else
{
isLoading = true;
loadedFiles.Clear();
progressPercent = 0;
try
{
trustedFileName = claimDetail.ClaimDetailId.ToString() + file.Name.Substring(file.Name.IndexOf('.'));
string rootPath = @"C:\inetpub\wwwroot\Claims Blazor\Claim Attachments\";
var path = Path.Combine(rootPath, trustedFileName);
await using FileStream writeStream = new(path, FileMode.Create);
using var readStream = file.OpenReadStream(maxFileSize);
var bytesRead = 0;
var totalRead = 0;
var buffer = new byte[1024 * 10];
while ((bytesRead = await readStream.ReadAsync(buffer)) != 0)
{
totalRead += bytesRead;
await writeStream.WriteAsync(buffer, 0, bytesRead);
progressPercent = Decimal.Divide(totalRead, file.Size);
StateHasChanged();
}
loadedFiles.Add(file);
claimDetail.HasAttachement = true;
}
catch (Exception ex)
{
_logger.LogError("File: {Filename} Error: {Error}",
file.Name, ex.Message);
}
isLoading = false;
}
}
在部署到IIS服务器后,上传似乎不起作用。日志中没有错误消息,所以我不认为它触发了异常。任何人都知道问题可能在哪里。
1条答案
按热度按时间v440hwme1#
根据你的描述,如果你的代码没有问题,我猜下面的原因可能会导致问题,你可以检查一下。
IIS用户账号可能没有权限上传文件到服务器,需要检查上传文件所在目录的权限,并确保IIS用户账号有写权限。
此外,如果您尝试上传的文件太大,则上传可能会失败,因为IIS的默认最大文件大小限制为30 MB。当然,您可以通过修改
web.config
文件中的maxAllowedContentLength设置来增加文件大小限制。也可能是服务器的防火墙阻止了文件上载请求。您需要检查防火墙设置或网络限制。