C# 如何让用户从本地系统硬盘驱动器的任何位置选择JPG文件

C# 如何让用户从本地系统硬盘驱动器的任何位置选择JPG文件,c#,.net,sql,visual-studio-2010,file-upload,C#,.net,Sql,Visual Studio 2010,File Upload,我使用文件上传控制。我希望用户: 1) 搜索任何位置 2) 选择并加载任何.JPG文件或任何其他图像格式文件 3) 将该特定文件存储在DB(SQL)中 解决方案:我实现了所有这些,但是我硬编码了路径 问题:我不知道如何删除此硬编码并实现以上3点:(请帮助调整代码: if (FileUpload1.HasFile) { FileStream FS = new FileStream(@"C:\Users\Ramakrishnan\Desktop\New folder\001.jpg", Fil

我使用文件上传控制。我希望用户:

1) 搜索任何位置

2) 选择并加载任何.JPG文件或任何其他图像格式文件

3) 将该特定文件存储在DB(SQL)中

解决方案:我实现了所有这些,但是我硬编码了路径

问题:我不知道如何删除此硬编码并实现以上3点:(请帮助调整代码:

if (FileUpload1.HasFile)
{
   FileStream FS = new FileStream(@"C:\Users\Ramakrishnan\Desktop\New folder\001.jpg", FileMode.Open, FileAccess.Read);
   byte[] img = new byte[FS.Length];
   FS.Read(img, 0, Convert.ToInt32(FS.Length));
}
FileUpload1.FileName


这些链接用winforms的示例进行了解释:

这是针对webforms的:


文件上载控件具有流属性,只需将您的
FS
值替换为
FileUpload1.FileContent

**更新**

根据评论中的讨论,我认为你仍然做得不对

您的代码应该是:

if (FileUpload1.HasFile)
{
   byte[] img = new byte[FileUpload1.FileContents.Length];
   FileUpload1.FileContents.Read(img, 0, Convert.ToInt32(FS.Length));
   // Store the image in the DB
}

没有理由尝试从文件系统中打开文件,您感兴趣的文件在web服务器的文件系统中不存在。

您希望用户使用您的webcontrol搜索他的计算机?或者您的意思是从他的目录中选择要上载的文件?您是否尝试从
文件上载1
中获取内容并存储数据库中的em?@Kristof:从他选择的目录中选择一个要上载的文件。我的意思是理想情况下,它应该替换@“C:\Users\Ramakrishnan\Desktop\New folder\001.jpg”在我上面的代码中,动态地使用他选择的文件名,而不是这个硬编码的文件名001.jpg…..所以我只想让第一个参数成为动态的。@CodingGorilla:Yeup内容就像在文件名中一样,我想,我正在转换为字节流以存储在DB中。但我可以实现所有这些。我只想调整这段代码以使它成为动态的。@CodingGorilla:Yeup内容他第一个参数是动态的,而不是像这样硬编码。因为用户可能会搜索另一个目录,甚至在这个目录文件夹中有许多图像文件,但他可以自由选择他想要的任何文件。我想实现这一点:(@divide文件上传控件有一个流属性,只需将您的
FS
值替换为
FileUpload1.FileContent
。非常感谢先生:):)上帝先生:)我非常抱歉,我看到它总是使用第一个文件:(不是我选择的文件。但没有例外。byte[]img=新字节[FileUpload1.FileContent.Length];FileUpload1.FileContent.Read(img,0,Convert.ToInt32(FileUpload1.FileContent.Length));您有多个文件上载控件吗?没有,先生:(只有一个文件上载控件。我不知道为什么,它总是使用第一个文件名。我还尝试了这个字符串file=Path.GetFullPath(FileUpload1.PostedFile.FileName);FileStream FS=new FileStream(file,FileMode.Open,FileAccess.Read);byte[]img=new byte[FS.Length];FS.Read(img,0,Convert.ToInt32(FS.Length));我不知道你所说的“第一个文件名”是什么意思,你期待什么?
if (FileUpload1.HasFile)
{
   byte[] img = new byte[FileUpload1.FileContents.Length];
   FileUpload1.FileContents.Read(img, 0, Convert.ToInt32(FS.Length));
   // Store the image in the DB
}