Вы можете написать обработчик, который открывает файл в сети, используя его UNC-путь, и записывает его содержимое в ответ, используя Response.WriteFile
:
<%@ WebHandler Language="C#" Class="Handler" %>
using System.IO;
public class NetworkImageHandler : System.Web.IHttpHandler
{
// Folder where all images are stored, process must have read access
private const string NETWORK_SHARE = @"\\computer\share\";
public void ProcessRequest(HttpContext context)
{
string fileName = context.Request.QueryString["file"];
// Check for null or empty fileName
// Check that this is only a file name, and not
// something like "../../accounting/budget.xlsx"
// Check that the file extension is valid
string path = Path.Combine(NETWORK_SHARE, fileName);
// Check if the file exists
context.Response.ContentType = "image/jpg";
context.Response.WriteFile(path, true);
}
public bool IsReusable { get { return false; } }
}
Затем вы устанавливаетеimage src
к URL-адресу обработчика:
<asp:Image runat="server" ImageUrl="~/NetworkImageHandler.ashx?file=file.jpg" />
Будьте очень строги в проверке ввода, не создавайте обработчик, который позволил бы кому-то открыть только любой файл в вашей сети ,Ограничьте доступ к одной папке, только предоставьте рабочему процессу доступ к этой папке и проверьте допустимые расширения файлов (например, jpg, jpeg, png, gif).
Это довольно простой пример, донне используйте его в производственном процессе без тестирования.
Альтернативные способы записи содержимого в ответ и пример кода см .: