我只想知道如何为抓取文件提供自定义默认位置。 我已将文件上传到本地数据库,并且我已将文件绑定到网格。当我按下它时,显示一个名为的错误,“找不到位置文件”
如果我将特定上传的文件复制到指定位置,我可以轻松下载。 所以我只需要知道如何提供默认位置,以便我可以从同一个位置上传和下载文件。
错误快照:https://imageshack.com/i/ewTrmAI2j
使用自定义文件夹路径编辑相同的下面的代码。但我不知道为什么总是从 bin / debug / 文件夹中询问该文件。为什么会发生这样的事情。有没有办法我可以对这个文件夹进行更改..除了 bin / debug / 文件夹
代码:
private void DownloadAttachment(DataGridViewCell dgvCell)
{
string fileName = Convert.ToString(dgvCell.Value);
//Return if the cell is empty
if (fileName == string.Empty)
return;
FileInfo fileInfo = new FileInfo(fileName);
string fileExtension = fileInfo.Extension;
byte[] byteData = File.ReadAllBytes(fileInfo.FullName); - - - - <<<<< ERROR HERE
//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();
File.WriteAllBytes(saveFileDialog1.FileName, byteData);
byteData = System.Text.Encoding.ASCII.GetBytes(s);
}
}
}
答案 0 :(得分:0)
FileInfo()构造函数仅适用于完整文件路径。听起来你正在尝试使用只有文件名的构造函数,此时当你尝试读取文件时它会失败,因为它不是一个有效的路径。处理这个问题有几种可能性:
创建自己的继承自FileInfo()的MyFileInfo()类,并添加一个将特定路径追加到文件名的构造函数。
只需在代码中将该路径内嵌到:
var myPath = @“c:\ folder \ stuff \”; FileInfo fileInfo = new FileInfo(myPath + fileName);
通常情况下,路径会在app.config中设置为设置,因此您可以根据需要轻松更改。
答案 1 :(得分:0)
我找到了答案
编码gridview的绑定文件路径并使用文件路径下载文件
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() == System.Windows.Forms.DialogResult.OK)
{
string strfilename = fileDialog.FileName;
cncInfoDataGridView.Rows[dgvCell.RowIndex].Cells[1].Value = strfilename;
}
}
}
/// <summary>
/// Download Attachment from the provided DataGridViewCell
/// </summary>
/// <param name="dgvCell"></param>
private void DownloadAttachment(DataGridViewCell dgvCell)
{
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 = File.ReadAllBytes(s);
File.WriteAllBytes(saveFileDialog1.FileName, objData);
}
}
}
}
}