0

我尝试使用flurl发送这样的文件:

public ImportResponse Import(ImportRequest request, string fileName, Stream stream)
    {
        request).PostAsync(content).Result<ImportTariffResponse>();

        return FlurlClient(Routes.Import, request).PostMultipartAsync(mp => mp.AddJson("json", request).AddFile("file", stream, ConvertToAcsii(fileName))).Result<ImportResponse>();
    }

fileName = "Файл импорта тарифов (1).xlsx"

但是在 post 方法中,我得到了这个:

Request.Files.FirstOrDefault().FileName = "=?utf-8?B?0KTQsNC50Lsg0LjQvNC/0L7RgNGC0LAg0YLQsNGA0LjRhNC+0LIgKDEpLnhsc3g=?="

有什么建议么?

4

1 回答 1

2

文件名似乎是使用MIME 编码字语法编码的。(Flurl 不会直接执行此操作,它可能会在检测到非 ASCII 字符时发生在 HttpClient 库的更深处。). NET 不直接支持解码这种格式,但您可以很容易地自己完成。如果你=?utf-8?B?从头到尾剥离?=,剩下的就是你的文件名 base64 编码。

这是您可以做到的一种方法:

var base64 = Request.Files.FirstOrDefault().FileName.Split('?')[3];
var bytes = Convert.FromBase64String(base64);
var filename = Encoding.UTF8.GetString(bytes);
于 2017-06-23T15:54:41.787 回答