Mad*_*Boy 7 .net memorystream docx c#-3.0
我把文件从内存流上传到数据库时遇到了一些麻烦(它在DB中可见为0x,所以我猜它没有得到妥善保存).我不确定是否存在创建Stream或从流中保存到db的问题应该以不同方式完成.
private void test {
byte[] storage = new byte[500000];
using (MemoryStream stream = new MemoryStream(storage))
DocX documentWord = DocX.Create(stream);
// some stuff
documentWord.Save();
databaseFilePut(stream);
}
public static void databaseFilePut(MemoryStream stream) {
byte[] file;
using (var reader = new BinaryReader(stream)) {
file = reader.ReadBytes((int) stream.Length);
// reader.Close();
}
//stream.Close();
//}
using (var varConnection = Locale.sqlConnectOneTime(Locale.sqlDataConnectionDetailsDZP))
using (var sqlWrite = new SqlCommand("INSERT INTO Raporty (RaportPlik) Values(@File)", varConnection)) {
sqlWrite.Parameters.Add("@File", SqlDbType.VarBinary, file.Length).Value = file;
sqlWrite.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我正在使用Docx codeplex库.
你正在写入流,然后立即尝试从中读取而不倒带 ...所以没有数据可读.
幸运的是,无论如何都有一种非常简单的方法来简化代码:
byte[] file = stream.ToArray();
Run Code Online (Sandbox Code Playgroud)
但是,你还有另一个潜在的问题:
byte[] storage = new byte[500000];
using (MemoryStream stream = new MemoryStream(storage))
...
Run Code Online (Sandbox Code Playgroud)
这将使得MemoryStream有固定的500K大小-无多,不会少.我怀疑那不是你想要的; 我建议你摆脱storage变量,只需调用无参数MemoryStream构造函数.
| 归档时间: |
|
| 查看次数: |
5848 次 |
| 最近记录: |