2

我希望有人可以对此有所了解。令我懊恼的是,我意识到 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 变量包含文件信息,我只需要将其转换为可读格式……尽管如此,我遇到了困难。

非常感谢任何想法或帮助!

4

2 回答 2

1

您正在寻找 C#,对吗?

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

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

于 2013-10-05T18:22:49.670 回答
1

该类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 的较大文件,则必须对其进行显着不同的编码,但我假设您要对文件大小设置合理的限制,以避免出现内存不足异常或必须将文件缓存到硬盘驾驶。

于 2013-10-05T18:35:56.503 回答