0

我正在寻找创建一些自定义 API 应用程序,其唯一目的是创建一个/一些逻辑应用程序。使用这些自定义 API 应用程序,我想传递文件。这些文件通常是 CSV、ZIP、Excel、TXT 和一些其他格式——在文件返回之前消费者不知道(即客户端不指定文件格式)。

如何以与 Swagger/Swashbuckle、Web API 和逻辑应用程序兼容的方式执行此类操作?我最终会将它绑定到 FTP 连接器、Dropbox、Onebox 或其他文件存储连接器中。

遵循这样的工作还是我需要采取不同的方法?例如,我是否应该简单地使用 JSON 对象并使用这样的模型让我的二进制文件进行 base64 编码?

public class BinaryFile
{
    public string FileName { get; set; }
    public string FileExtension { get; set; }
    public string DeducedMimeType { get; set; }
    public int FileSize { get; set; }
    public string FileEncoding { get; set; }
    public byte[] FileBinary { get; set; }
}

这个问题交叉发布到 MSDN 论坛

4

1 回答 1

0

我采取的方法就是我在BinaryFile课堂上提出的问题。我把它分成几类。我还没有完成 - 我还有一些改进要做,但现在可以使用。

具有一些常见字段的主类:

public class FileResult<T>
{
    public string Source { get; set; }
    public T File { get; set; }
    public IList<string> ErrorMessages { get; set; } = new List<string>();
    public bool IsSuccessful { get; set; } = false;
}

这是<T>FileResult<T>班上的:

public class CsvFile
{
    public string Filename { get; set; }
    public string Contents { get; set; }
    public int Size { get; set; }
}

public class BinaryFile
{
    public string FileName { get; set; }
    public string FileExtension { get; set; }
    public string DeducedMimeType { get; set; }
    public int Size { get; set; }
    public byte[] Contents { get; set; }
}

请注意,在我的情况下,有时我正在处理多个文件而不仅仅是一个文件,所以看起来一些常见的字段仍然在传入的类型中,<T>所以我可以有类似FileResult<IEnumerable<CsvFile>>.

这一切都与 Swagger、Swashbuckle、Web API、Azure API 应用程序和 Azure 逻辑应用程序配合得很好。对于将多个文件返回到我的 Azure 逻辑应用程序的情况,我使用相当隐藏splitsOn的功能(也有一些设计器错误,所以要小心!)轻松迭代所有文件。它工作得很好。

于 2016-01-05T14:45:42.650 回答