Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将文件路径上载到本地数据库并在单击“下载”按钮时接收文件路径_C#_Winforms_Datagridview - Fatal编程技术网

C# 如何将文件路径上载到本地数据库并在单击“下载”按钮时接收文件路径

C# 如何将文件路径上载到本地数据库并在单击“下载”按钮时接收文件路径,c#,winforms,datagridview,C#,Winforms,Datagridview,问题是,当我下载文件时,我可以看到下载文件中的路径。我没有得到里面文件的实际内容 当我附加一个名为sample.txt和的文件时,sample.txt的路径是==C:\Users\smohan\Downloads\database\LocalDataBaseAp\sample.txt。我可以看到路径与我的datagrid绑定在一起。但是当我点击网格的单元格并下载相同的文件时。文件正在下载。但是当我打开。。我在里面看到的下载文件缺少实际内容,但路径被保存为内容(即C:\Users\smohan\D

问题是,当我下载文件时,我可以看到下载文件中的路径。我没有得到里面文件的实际内容

当我附加一个名为sample.txt和的文件时,sample.txt的路径是
==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。我会在这上面搜索一下。