代码之家  ›  专栏  ›  技术社区  ›  Ioannes Arkhipov

Blazor Wasm文件上传:系统。IO.Filestream在实例化新的Filestream时不断将根文件夹(“/”)添加到(前面的)路径字符串

  •  2
  • Ioannes Arkhipov  · 技术社区  · 2 年前

    正在尝试从我的表单上传文件 <EditForm> 具有 <InputFile OnChange="SaveFilesAsync" multiple></InputFile> . 我想使用的路径一直被系统覆盖。IO逻辑,通过添加 AppDomain.CurrentDomain.BaseDirectory ,在本例中是我的路径字符串的root/,将其作为第一个字符添加,从而引发错误。

    以下是代码块。 请注意,出于调试目的,我在中简单地硬编码了路径字符串。最初,我试图从appsettings加载根路径,进行路径组合等等。

    <InputFile OnChange=“SaveFilesAsync”多个></输入文件> 电话

    private async Task SaveFilesAsync(InputFileChangeEventArgs inputFileChangeEventArgs)
    {
        foreach (var file in inputFileChangeEventArgs.GetMultipleFiles())
        {
    Stream stream = file.OpenReadStream(maxAllowedSize: 1024 * 1024 * 300);
    
    using (var fileStream = new FileStream(@"C:/Databanken/Lovap/1.png", FileMode.Create))
    

    这会产生一个错误

    “找不到路径'/C:/Databanken/Lovap/1.png'的一部分”

    注意C突然出现的/。 为什么?如何避免这种情况?

    预期行为?我希望能够将文件存储在我选择的位置。

    此外,作为一个不重要的旁白。如果我只是使用AppDomain。CurrentDomain。BaseDirectory+文件。名称代码运行了,但最终我在任何地方都找不到文件。我本来希望在bin目录(或子目录)中找到它。所以我在这里真的很困惑。

    1 回复  |  直到 2 年前
        1
  •  2
  •   qqtf    2 年前

    你把Blazor服务器弄糊涂了。这在blazor-wasm中是不可能的,但在blazor服务器中是可能的。以下是有关的示例和信息 how to do it and what is possible 。这是一个 explanation 关于你找不到的文件。