我有2个项目,1个是Web应用程序,另一个是WPF,在我的Web应用程序中我有一个上传页面,允许用户上传他们的文件,我使用了Server.MapPath(@“〜/ something /”)目录但我如何在我的WPF应用程序中检索该文件,我可以通过键入完整路径C:/ programfiles / projects ...等来检索,但我从数据库中检索目录,在数据库中它读取就像那样〜 /something/filename.jpg。
我只在数据库中保存〜/ something / filename.jpg,如何在不手动输入完整路径的情况下检索完整路径?
完整路径位于另一个项目C:/programfiles/projects/visualstudio/projectname/something/filename.jpg。
如何在另一个项目中仅使用〜/ something / filename.jpg访问该文件?有一个错误,说路径不存在,除非我输入完整路径,但我不想这样。
有人说我们必须在我的App.Config的connectionstring中添加一个域目录,然后我需要使用它并将它与数据库url结合起来以获取我的完整路径。但我不知道该怎么做。
connectionstring:
<add name="istellarEntities2" connectionString="metadata=res://*/ModelSQL.iStellar.csdl|res://*/ModelSQL.iStellar.ssdl|res://*/ModelSQL.iStellar.msl;provider=System.Data.SqlClient;provider connection string="data source=IMAC-PC10\SQLEXPRESS;initial catalog=istellar;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
我如何从我的数据库中检索(URL,使用实体框架daoWordPuzzle是一个由CRUD代码组成的类文件):
@daoWordPuzzle.GetfileURL() // however this displays only ~/something/something.jpg
我需要有完整的路径。我该怎么做?
答案 0 :(得分:3)
首先,一个简单的问题:您的WPF应用程序是否也在运行该网站的WEB SERVER上运行?
或者您的桌面和Web服务器上的WPF应用程序是否在其他地方?
在第一种情况下:您可以简单地将路径的第一部分存储在WPF应用程序的appSettings中,以告诉您目录的位置。例如,仅存储数据库列中路径的最后部分。这样,您可以使用System.IO命名空间中的Path.Combine()来查找位置。
在另一种情况下可以使用相同的方法,但这取决于您是否将UNC共享到存储文件的Web服务器目录。如果没有,您的WPF应用程序可能需要使用URL而不是文件路径通过HTTP访问文件。如果是,您只需将路径前缀存储在应用程序配置中,就像这样“\ WEBSERVER \ Something”
using System.Configuration;
string fileUploadDirectory = ConfigurationManager.AppSettings["FileUploadDirectory"];
// using Substring(1) to skip the ~ that is stored in the database and is returned by GetfileURL()
string fullFilePath = Path.Combine(fileUploadDirectory ,daoWordPuzzle.GetfileURL().Substring(1))