以可读格式发送回文件

Send file back in a readable format?

本文关键字:回文 文件 格式      更新时间:2023-09-26

我希望有人能对此有所了解。令我懊恼的是,我意识到IE8和IE9等浏览器不支持任何类型的文件阅读器。

因此,经过一些研究,我试图让服务器读取文件的内容,将其转换为base64,然后将其发送回客户端,javascript从那里获取它。

这可能吗?您建议如何执行此操作?

例如,现在我已经设置了一个 RESTful 服务,该服务在提交表单后获取文件......

public string Post()
    {
        string readableFile="";
        HttpResponseMessage result = null;
        var httprequest = HttpContext.Current.Request;
        if (httprequest.Files.Count > 0)
        {
            foreach (string file in httprequest.Files)
            {
                var postedFile = httprequest.Files[file];
                //convert to base64? somehow?
            }
        }
        return readableFile;
    }

postedFile 变量包含文件信息,我只需要将其转换为可读格式......虽然,我遇到了困难。

任何想法或帮助将不胜感激!

HttpPostedFile 类有一个可用于读取数据的 InputStream 属性。 若要将该数据隐藏为 base64 字符串,可以执行以下操作:

public string Post(HttpPostedFile file)
{
    if (file.InputStream.Length > Int32.MaxValue) // Or some other file length limitation
        throw new HttpResponseException(HttpStatusCode.BadRequest);
    int length = (int)file.InputStream.Length;
    byte[] buffer = new byte[length];
    file.InputStream.Read(buffer, 0, length);
    string encodedString = Convert.ToBase64String(buffer);
    return encodedString;
}

如果你想支持超过 4GB 的较大文件,你必须以显着不同的方式编码它,但我假设你想对文件大小设置一个合理的限制,以避免出现内存不足异常或不得不将文件缓存到硬盘驱动器。

你正在寻找 C#,对吧?

string sixtyfour = System.Convert.ToBase64String(
                       myFileUploadControl.FileBytes,
                       0,
                       myFileUploadControl.FileBytes.Length);

这应该获取文件上传控件的内容并将其放入 base64 中。