C# 如何将文件路径上载到本地数据库并在单击“下载”按钮时接收文件路径
问题是,当我下载文件时,我可以看到下载文件中的路径。我没有得到里面文件的实际内容 当我附加一个名为sample.txt和的文件时,sample.txt的路径是C# 如何将文件路径上载到本地数据库并在单击“下载”按钮时接收文件路径,c#,winforms,datagridview,C#,Winforms,Datagridview,问题是,当我下载文件时,我可以看到下载文件中的路径。我没有得到里面文件的实际内容 当我附加一个名为sample.txt和的文件时,sample.txt的路径是==C:\Users\smohan\Downloads\database\LocalDataBaseAp\sample.txt。我可以看到路径与我的datagrid绑定在一起。但是当我点击网格的单元格并下载相同的文件时。文件正在下载。但是当我打开。。我在里面看到的下载文件缺少实际内容,但路径被保存为内容(即C:\Users\smohan\D
==C:\Users\smohan\Downloads\database\LocalDataBaseAp\sample.txt
。我可以看到路径与我的datagrid绑定在一起。但是当我点击网格的单元格并下载相同的文件时。文件正在下载。但是当我打开。。我在里面看到的下载文件缺少实际内容,但路径被保存为内容(即C:\Users\smohan\Downloads\database\LocalDataBaseAp\sample.txt
我的代码怎么了
private void UploadAttachment(DataGridViewCell dgvCell)
{
using (OpenFileDialog fileDialog = new OpenFileDialog())
{
//Set File dialog properties
fileDialog.CheckFileExists = true;
fileDialog.CheckPathExists = true;
fileDialog.Filter = "All Files|*.*";
fileDialog.Title = "Select a file";
fileDialog.Multiselect = true;
if (fileDialog.ShowDialog() == DialogResult.OK)
{
cncInfoDataGridView.Rows[dgvCell.RowIndex].Cells[1].Value = fileDialog.FileName;
SqlCeConnection cnn = new SqlCeConnection(Properties.Settings.Default.CncConnectionString);
//FileInfo fileInfo = new FileInfo(fileDialog.FileName);
byte[] imgData;
imgData = File.ReadAllBytes(fileDialog.FileName);}
}
}
/// <summary>
/// Download Attachment from the provided DataGridViewCell
/// </summary>
/// <param name="dgvCell"></param>
private void DownloadAttachment(DataGridViewCell dgvCell)
{
string strId = cncInfoDataGridView.Rows[dgvCell.RowIndex].Cells[1].Value.ToString();
string fileName = Convert.ToString(dgvCell.Value);
if (!string.IsNullOrEmpty(fileName))
{
byte[] objData;
FileInfo fileInfo = new FileInfo(fileName);
string fileExtension = fileInfo.Extension;
//show save as dialog
using (SaveFileDialog saveFileDialog1 = new SaveFileDialog())
{
//Set Save dialog properties
saveFileDialog1.Filter = "Files (*" + fileExtension + ")|*" + fileExtension;
saveFileDialog1.Title = "Save File as";
saveFileDialog1.CheckPathExists = true;
saveFileDialog1.FileName = fileName;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string s = cncInfoDataGridView.Rows[dgvCell.RowIndex].Cells[1].Value.ToString();
objData = System.Text.Encoding.ASCII.GetBytes(s);
string strFileToSave = saveFileDialog1.FileName;
File.WriteAllBytes(saveFileDialog1.FileName, objData);
}
}
}
}
}
private void上传附件(DataGridViewCell dgvCell)
{
使用(OpenFileDialog fileDialog=新建OpenFileDialog())
{
//设置文件对话框属性
fileDialog.CheckFileExists=true;
fileDialog.CheckPathExists=true;
fileDialog.Filter=“所有文件|*.*”;
fileDialog.Title=“选择一个文件”;
fileDialog.Multiselect=true;
if(fileDialog.ShowDialog()==DialogResult.OK)
{
cncInfoDataGridView.Rows[dgvCell.RowIndex].Cells[1].Value=fileDialog.FileName;
SQLCEConnectionCNN=新的SqlCeConnection(Properties.Settings.Default.CncConnectionString);
//FileInfo FileInfo=newfileinfo(fileDialog.FileName);
字节[]imgData;
imgData=File.ReadAllBytes(fileDialog.FileName);}
}
}
///
///从提供的DataGridViewCell下载附件
///
///
私有void下载附件(DataGridViewCell dgvCell)
{
string strId=cncInfoDataGridView.Rows[dgvCell.RowIndex].Cells[1].Value.ToString();
字符串文件名=Convert.ToString(dgvCell.Value);
如果(!string.IsNullOrEmpty(文件名))
{
字节[]objData;
FileInfo FileInfo=新的FileInfo(文件名);
字符串fileExtension=fileInfo.Extension;
//显示另存为对话框
使用(SaveFileDialog saveFileDialog1=new SaveFileDialog())
{
//设置保存对话框属性
saveFileDialog1.Filter=“Files(*“+fileExtension+”)|*“+fileExtension;
saveFileDialog1.Title=“将文件另存为”;
saveFileDialog1.CheckPathExists=true;
saveFileDialog1.FileName=文件名;
if(saveFileDialog1.ShowDialog()==DialogResult.OK)
{
字符串s=cncInfoDataGridView.Rows[dgvCell.RowIndex].Cells[1].Value.ToString();
objData=System.Text.Encoding.ASCII.GetBytes;
字符串strFileToSave=saveFileDialog1.FileName;
File.writealBytes(saveFileDialog1.FileName,objData);
}
}
}
}
}
}我明白你现在在做什么;下面是相关的代码部分:
objData = System.Text.Encoding.ASCII.GetBytes(s);
问题是我认为您误解了System.Text.Encoding.ASCII.GetBytes(string)
的功能。它不读取文件的内容;它对传递给它的字符串进行编码。因此,您是从网格中写入文件路径,而不是文件的内容。这更像是你想要的:
objData = File.ReadAllBytes(s);
它在您传递给它的路径上读取文件中的所有字节,并在您使用时返回一个
字节[]
。提示您开始:文件路径只是一个字符串。它是一个web应用程序吗?@AndrewBarber请查看我编辑的问题。。但是,当我下载时,我会将路径保存在下载文件中file@Ghukas是winformapplication@AndrewBarber任何想法。。天哪,我真不敢相信。。我完成了我的项目,。。。哈哈哈哈。。谢谢。。我觉得一年过去了。我还需要使用string strFileToSave=saveFileDialog1.FileName代码>因为它保留了我的位置。还有,我怎样才能在网格cellview中只查看文件名。不是整条路。现在它向我展示了整条路。任何idea@Milanphir在这种情况下,没有;您不需要string strFileToSave=saveFileDialog1.FileName代码>。您可以直接传递saveFileDialog1.FileName
。至于其余的,;这将超出这个问题的范围。您需要更改绑定方式,并确保完整路径仍存储在您可以访问的位置。好的,谢谢。您能告诉我如何仅在列(gridview)上显示文件名吗。我的意思是从网格视图中隐藏路径并只显示文件名,对不起,我实际上不使用DataGridView。我会在这上面搜索一下。