簡體   English   中英

ASP.NET C# 文件訪問

[英]ASP.NET C# File Access

我的“ ImageDemo ”應用程序的架構

技術:ASP.NET 語言:C#

以前的架構: asp.net 頁面存儲在網絡服務器中。 Web 服務器中存在一個名為ImageRepository的文件夾。 我確實將圖像(由用戶瀏覽、選擇和存儲)存儲在ImageRepository中。 我可以訪問存儲在ImageRepository中的圖像的所有屬性和內容。 我曾經使用 ASP.NET 的圖像控制來顯示圖像。

新架構:我沒有將圖像存儲在網絡服務器的文件夾中,而是使用以下憑據設置了一個專用的文件服務器(比如說)

用戶名:my_name

密碼:wXy12Apl

可以登錄系統,訪問存儲圖像的文件夾,讀取文件的所有屬性。 然后我將文件名添加到下拉列表中,所以它看起來像這樣

在此處輸入圖像描述

因此,在onselectedindexchanged事件中,我嘗試使用 ASP.NET 的圖像控制來顯示圖像。 但我不能。 會有什么問題? 我可以訪問文件的所有屬性,但無法讀取圖像的內容

例如; 當我 select 第一個圖像時,控制看起來像在此處輸入圖像描述

當我 select 第二張圖片時,控制看起來像在此處輸入圖像描述

您可能沒有該文件的權限。 您可以像@Smudge202 建議的那樣做並應用正確的權限,或者您可以在不同的上下文中運行部分代碼。 請參閱此代碼以模擬用戶: http://www.codeproject.com/KB/cs/zetaimpersonator.aspx

瀏覽器/最終用戶無權訪問文件服務器。 您可以實施幾個快速解決方案:

1) 為最終用戶添加從新文件共享讀取的權限 - 如果您的站點是內部站點(僅在 LAN 上),那么這可能是最好的解決方案。 如果網站暴露在互聯網上,這可能不是最安全的解決方案。

2) 創建一個簡單的 web 服務(WCF 或 ASMX)。 確保服務可以從新共享中讀取,並讓服務將內容作為 Web 響應返回。

這是后者的一個(幾乎完整的)示例,一段舊代碼響應舊式 asp.net 處理程序(ashx),它實現了IHttpHandler - 我建議個人使用 WCF:

Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
    _Context = context
    _Context.Response.Clear()
    _Context.Response.ContentType = "image/jpg"
    If ImageParameter IsNot Nothing Then

        Dim imageData As Byte() = Nothing
        If String.IsNullOrEmpty(ImageParameter.CompressedFileStorageLocation) Then
            Return
        End If

        Dim imagePath As String = String.Format("{0}{1}", CS_IMAGE_REPOSITORY_BASE_PATH, ImageParameter.CompressedFileStorageLocation)
        Try
            If IO.File.Exists(imagePath) Then
                Using s As FileStream = New FileStream(imagePath, FileMode.Open)
                    ReDim imageData(s.Length)
                    Dim bytesRead As Integer = s.Read(imageData, 0, s.Length)
                    s.Close()
                End Using
            End If
        Catch ex As Exception
            Debug.Print(ex.Message)
        End Try

        _Context.Response.OutputStream.Write(imageData, 0, imageData.Length)
    End If

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM