这个问题:
有点相同,但答案并没有真正帮助。
在我的网站上,我在名为“Products2”的主目录中保存了一堆产品图像,其中包含基于项目 ID 的图像的各种子目录 0/0/0/1、0/0/0/2 等。
我有很多问题
Security Exception
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
由于权限而尝试使用DirectoryInfo
等。createDirectory
该网站托管在与 Medium Trust 共享的主机上。
我已要求我的托管公司对文件夹设置适当的权限,以便我可以使用这些功能,这些功能从根本上是使我的网站正确显示图像所必需的。伙计们已经这样做了,但由于某种原因,服务器设置不断恢复,然后我到处乱扔错误。
我被指出:
http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx
由我的托管服务提供商提供,但我无法达到我的需要。
有人可以帮我弄这个吗?
例如,尝试获取目录中包含的图像列表并将它们绑定到 ASP:Repeater:
Private Function getThumbnails(ByVal directoryPath As String, mainImg As String) As DataTable
Dim imgTable As New DataTable("images")
Dim imageURL As DataColumn = New DataColumn("url")
imgTable.Columns.Add(imageURL)
Dim imageID As DataColumn = New DataColumn("id")
imgTable.Columns.Add(imageID)
Dim dirInfo As New DirectoryInfo(directoryPath)
Dim fileList() As FileInfo = dirInfo.GetFiles("*.jpg")
For Each Image In fileList
If InStr(Image.Name, "-tb") > 0 And InStr(Image.Name, mainImg) <= 0 Then
Dim imgDetail As DataRow = imgTable.NewRow()
Dim theMapPath = HttpContext.Current.Server.MapPath("~/Products2")
Dim dirUrl = "/Products2" & Replace(Replace(directoryPath, theMapPath, ""), "\", "/")
Dim imgURL As String = Path.Combine("http://" & Request.ServerVariables("SERVER_NAME") & dirUrl, Image.Name)
imgURL = Replace(Replace(Replace(imgURL, "dev.", "www."), "~", ""), "admin.", "www.")
imgDetail.Item("url") = imgURL
imgDetail.Item("id") = Image.Name
imgTable.Rows.Add(imgDetail)
End If
Next
Return imgTable
End Function
这个函数接收一个目录作为一个字符串,变量directoryPath
是它的关键,并以Server.MapPath
生成的格式返回,所以D://etc...
有人告诉我的是我需要使用相对路径,但是尝试了各种“明显”选项后,我无法获得相同的功能。
在我看来,这只是意味着“/Products2/0/0/1/”等,但这不起作用,我收到错误消息说路径无效。
去做:
Uploading (using saveAs from an HttpPostedFile)
Delete images (File.Delete)
Create Directory (Directory.Create(), from Dim Directory As New DirectoryInfo()
并根据上述功能从目录中获取图像并显示。
我将如何使用 来执行此操作VirtualPathProvider
?