以可读格式发送回文件
本文关键字:回文 文件 格式 | 更新日期: 2023-09-27 18:34:07
我希望有人能对此有所了解。令我懊恼的是,我意识到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 中。