我有一个包含两个标签的Windows窗体。第一个选项卡用于保存图像,第二个选项卡用于检索。 我的源图片也在我的bin项目地址中,如下所示:
C:\ Users \ BlackRose \ Documents \ Visual Studio 2012 \ Projects \ RealState \ RealState \ bin \ Debug \ HomePics
现在我想知道如何将图片的地址保存到sql server并检索它们,即使我改变了我的项目位置......
我已经尝试过以下代码:
string path;
public myForm()
{
path = Environment.CurrentDirectory.ToString() + "\\HomePics";
openFileDialog1.InitialDirectory = path;
}
然后在函数中编写一些sql和c#代码并保存imagePath和imageName,保存它们没有问题。 但我确定我必须配置路径来设置相对路径,因为保存在db中的路径字符串是这样的:
C:\Users\BlackRose\Documents\Visual Studio 2012\Projects\RealState\RealState\bin\Debug\HomePics\pic1.jpg
使用此方法时,如果我想将项目文件夹移动到其他位置,则会出现问题 db中的所有地址都没用。
您能告诉我任何有用的方法,以便我可以在任何条件下检索它吗?
答案 0 :(得分:1)
您可以将HomePics
用作文件夹名称,同时将Path
保存到数据库中,如下所示:
path = "\\HomePics\\pic1.jpg";
从数据库访问图像路径时只需添加以下代码:
String strRelativePath=getRelativePathfromDB();//gives you \Home\pic1.jpg
String strAbsoluteFilePath= System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Replace("file:\\", "")+strRelativePath;
所以最后strAbsoluteFilePath
包含Absolute
路径:
C:\Users\BlackRose\Documents\Visual Studio 2012\Projects\RealState\RealState\bin\Debug\HomePics\pic1.jpg
上述路径会根据您执行项目的location
动态更改。
我希望这能解决你的问题:)
答案 1 :(得分:0)
你能做的是:
保存数据库中的相对路径,即示例中相对于\HomePics
(根文件夹)的路径(假设所有文件都在该文件夹及其子文件夹中)。
在应用程序的配置文件中,添加一个设置以说明根文件夹所在的位置,例如:在您的<appSettings>
中,您可以拥有条目<add key="ImagesRootFolder" value="C:\Images\HomePics" />
。或者,您也可以在数据库中将相同的信息保存在与图像分开的表中。