【问题标题】:Get file information from System.Web.HttpInputStream从 System.Web.HttpInputStream 获取文件信息
【发布时间】:2015-01-23 14:49:53
【问题描述】:

我有代码:

    public Upload.UploadResponse Post(Upload.UploadRequest request)
    {

        Stream str = request.RequestStream; // RequestStream is System.Web.HttpInputStream
        byte[] result;
        using (var streamReader = new MemoryStream())
        {
            str.CopyTo(streamReader);
            result = streamReader.ToArray();
        }
        return new Upload.UploadResponse() { Successed = 1 };
    }

有什么方法可以在不保存文件的情况下从 MemoryStream 或流或 System.Web.HttpInputStream(Upload.UploadRequest 请求的一部分)获取文件名(带扩展名)?我需要在不知道发送给我的内容的情况下识别文件。我试图将它转换为 FileStream 但它为空。我使用的服务框架是服务栈ServiceStack

编辑:也许我需要通过请求发送文件信息?

p.s 抱歉我的英文不好,欢迎指正

编辑:

这是我在上面的代码中使用的 UploadClass

public class Upload
{

    [Route("/upload")]
    public class UploadRequest : IRequiresRequestStream
    {
        public System.IO.Stream RequestStream { set; get; }

    }

    public class UploadResponse
    {
        public int Successed { set; get; }

    }
}

【问题讨论】:

  • Upload.UploadRequest 看起来像什么?是你的课吗?它是如何实例化的?上传是来自浏览器还是来自其他地方?不,带有扩展名的文件名不会出现在您的输入流中,除非您自己将它放在那里(也就是说,您编写了客户端代码,或提供了此类说明)

标签: c# .net file casting stream


【解决方案1】:

您无法从流中提取文件名。

您需要将 FileName 属性添加到您的请求中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多