- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用以下代码使用 SaveFileDialog 从 MySql 打开一个 Blob(winword 文档):
myConn.Open();
MySqlDataReader myReader;
myReader = view.ExecuteReader();
long CurrentIndex = 0;
long BytesReturned;
while (myReader.Read())
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string strFilename = saveFileDialog1.FileName;
FileStream fs = new FileStream(strFilename, FileMode.CreateNew, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs);
CurrentIndex = 0;
long len = myReader.GetBytes(1, 0, null, 0, 0);
byte[] blob = new byte[len];
BytesReturned = myReader.GetBytes(1, CurrentIndex, blob, 0, (int)len);
while (BytesReturned == (int)len)
{
bw.Write(blob);
bw.Flush();
CurrentIndex += (int)len;
BytesReturned = myReader.GetBytes(1, CurrentIndex, blob, 0, (int)len);
}
bw.Write(blob,0 , (int)len - 1);
bw.Flush();
bw.Close();
}
myReader.Close();
}
我得到的异常是:
Index out bounds of the array.
对于除 FileStream 之外的其他方法有什么建议吗?
最佳答案
No. In fact it should read only 1 column. And 1 row.
根据您的评论,我认为问题在于您尝试获取此行中的第二列(作为第一个参数);
long len = myReader.GetBytes(1, 0, null, 0, 0);
因为来自 SqlDataReader.GetBytes
method
public override long GetBytes(
int i,
...
)
Parameters i Type: System.Int32 The zero-based column ordinal.
当您在 GetBytes
方法中将 1 作为第一个参数时,您实际上是在尝试获取 DataReader
的第二列。
将 1
更改为 0
应该可以解决您的问题。喜欢;
long len = myReader.GetBytes(0, 0, null, 0, 0);
关于c# - 使用 SaveFileDialog 从 Mysql 打开一个 Blob 文件到 PC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20834855/
我当前正在从 URL 读取流。并将其保存为客户端上的文件。我知道 Silverlight 4 不支持 SaveFileDialog 上的默认文件名。 有没有人找到解决方法或某种方法将文件名注入(inj
所以我使用 SaveFileDialog 将文件保存到用户选择的位置。保存发生后,用户可以对保存到的文件和文件夹执行他们想要的操作。 但是,用户无法删除或修改该文件夹...它由应用程序保存在内存中,因
我有一个 SaveFileDialog。 当用户点击确定时,我必须检查是否有相似的文件名。 系统一直在做这样的测试,但是我需要添加一个测试是否有类似名称和编号的文件。 例如,如果用户选择了文件名“a”
经过深思熟虑和 Google 搜索后,我下定决心要创建自己的 SaveFileDialog。 但我不知道从哪里开始,因为我在网上没有看到任何东西,我想知道以前是否有人这样做过,我应该研究什么,或者我应
好的,我这里有这个场景。我将一个 URL 指向用户以允许他们开始下载。下载按钮有一个类似 www.mydomainname/files/abc.mp3 的 navigateURL。所以当用户点击它时,
我在 pictureEdit (Devexpress) 上使用上下文菜单,因此当用户右键单击并选择菜单项时,它应该保存文件。但是当 saveDialog 窗口打开时上下文菜单仍然显示。 如何删除该错误
我正在构建一个需要使用 SaveFileDialog 的应用程序。问题是我想限制用户使用 SaveFileDialog 的某些部分(例如,我不希望他们编辑文件名)。我听说使用 Windows 窗体 S
我正在使用 SaveFileDialog 让用户在可移动驱动器上选择目录和文件名。之后我创建该文件,写入它,然后再次关闭它。 此时文件本身未被锁定(可编辑、可删除),但我无法弹出驱动器,因为 Wind
我使用 SaveFileDialog 选择我想要保存文件的路径。我将 InitialDirectory 设置为某个文件夹,但我想将保存位置限制为该文件夹或该文件夹的子文件夹。这可能吗? SaveFil
我想用 默认文件名 从值 DataGridViewCells 创建 SaveFileDialog 到目前为止我已经尝试过了 private void buttonSave_Click(object s
我想保存一个有两个选项(.Png 或 .Jpeg)的图像,所以我只需要显示具有 Png 和 Jpeg 格式 的文件,就像我们选择保存类型时as All Images 它在对话框中显示所有类型的图像。那
在我的 SaveFileDialog 中,过滤器中有多种类型,但是在查看对话框时,如果我选择一个过滤器来查看目录中该类型的文件,我只能看到第一个和最后一个过滤器的文件。 bool save;
我正在使用 SaveFileDialog.SaveFile。如何将其设置为默认(操作系统)驱动器盘符,并将选项限制为仅显示 .BIN 作为文件扩展名? 我尝试阅读 MSDN 上的文档,但我对此很陌生,
private void button2_Click(object sender, EventArgs e) { SaveFileDialog Sdialog = new Sav
我正在用 C# 编写代码,我想更改 SaveFileDialog 中“保存”和“取消”按钮的默认排列。默认排列是“保存”按钮位于“取消”按钮上方。 我想要的是将“取消”按钮放在“保存”按钮的右侧。 我
我试图从 SaveFileDialog 中获取我的路径,但没有我的文件名,以便创建一个 DirectoryInfo 对象 private void btnBrowseCapture_Click(obj
单击按钮时,我的程序会捕获图表的屏幕截图,标题为 chartMain。代码如下: private void buttonScreenshot_Click(object sender, EventArg
我有保存bin文件的代码,但是用户必须选择文件 Stream myStream; SaveFileDialog saveFileDialog1 = new Save
基本上我有一个创建字节数组的程序(通过 richtextbox 手动输入,我希望能够创建一个新文件并通过 SaveFileDialog() 方法将字节保存在该文件中。 我想出的代码是: byte[]
我们的用户有时会使用不允许删除文件的目录。 (文件系统权限删除 和删除子文件夹和文件 都被拒绝)。我们使用 System.Windows.Forms.SaveFileDialog 来允许用户选择目录并
我是一名优秀的程序员,十分优秀!