如何将数据 URL 格式的文件正确保存到隔离存储
How to properly save a file in data URL format to IsolatedStorage
我正在尝试将文件从浏览器上传到 asp.NET 服务。我正在使用FileReader.readAsDataURL()
并将文件作为数据 URL 获取。
我使用此 JavaScript 代码event.target.result.match(/,(.*)$/)[1]
仅获取 base64 格式的文件。这是我发送给服务的内容。
使用下面的代码,我将文件存储在独立存储中
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(
IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
byte[] byteArray = Convert.FromBase64String(data);
IsolatedStorageFileStream stream = new IsolatedStorageFileStream("myfile",
FileMode.Create, isoStore);
StreamWriter writer = new StreamWriter(stream);
writer.Write(byteArray);
writer.Close();
不幸的是,我保存的文件已损坏。我做错了什么吗?有没有更好的方法可以做到这一点?
编辑:我正在尝试实现Gmail风格的文件上传。我尝试过表格,但它使事情复杂化了很多。
我的 ajax 调用如下所示:
var query = {
"data": fileData,
"fileName": fileName
};
$.ajax({
type: "POST",
url: "Page.aspx/UploadFile",
data: JSON.stringify(query),
contentType: "application/json; charset=utf-8",
dataType: "JSON"});
它是否与 UTF-8 编码有关?
问题是我写错了数据。您不需要StreamWriter
来写入数据。 IsolatedStorageFileStream
就足够了。所以代码应该是:
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(
IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
byte[] byteArray = Convert.FromBase64String(data);
IsolatedStorageFileStream stream = new IsolatedStorageFileStream("myfile",
FileMode.Create, isoStore);
stream.Write(byteArray, 0, byteArray.Length);
stream.Close();
相关文章:
- Amd,希望确保某个东西总是最后执行
- 如何将getJson的响应保存在全局变量中
- 按下按钮时保存cookie
- 如何使用 Angular JS 将数据保存在数据库中
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- HTML5在画布中加载较小的图像并保存实际大小的图像
- 是否可以在浏览器中使用纯JavaScript保存音频流
- 如何将多个画布保存为一个图像
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- 保存数组javascript
- 保存串行端口列表与流星
- 将JavaScript变量保存到Rails模型
- 我如何才能确保计时器设置为每天4点半,所以我不会;不用在Javascript中提及某个日期
- Java脚本将URL转换为已保存的URL时出错
- 如何自动保存动态生成的HTML SVG元素
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- 将JQuery Handontable保存到服务器上的excel文件中
- NodeJS expressJS使用multer和passport将文件上传并保存到MongoDB
- 如何确保在 Mocha 中的 done() 之前执行对数据库的循环保存