我希望有人可以对此有所了解。令我懊恼的是,我意识到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变量包含文件信息,我只需要将其变成可读格式......但是,我遇到了困难。
非常感谢任何想法或帮助!
答案 0 :(得分:1)
你正在寻找C#,对吧?
string sixtyfour = System.Convert.ToBase64String(
myFileUploadControl.FileBytes,
0,
myFileUploadControl.FileBytes.Length);
应该获取fileupload控件的内容并将其放入base64。
答案 1 :(得分: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的大文件,则必须以不同的方式对其进行编码,但我假设您要设置合理的文件大小限制,以避免出现内存不足或必须缓存文件到了硬盘。