1

我正在尝试将文件从浏览器上传到 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 编码有关吗?

4

1 回答 1

1

问题是我写的数据不正确。您不需要 aStreamWriter来写入数据。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();
于 2013-11-12T14:27:01.740 回答