訪問靜態(tài)文件
??常見靜態(tài)文件有css樣式表惯悠、js腳本靠粪、多媒體文件、html靜態(tài)頁面等茬底。
??Asp.Net Core 應用默認不啟用對靜態(tài)文件訪問,如果啟用需要在Startup.Configure
方法中調用UserStaticFiles
方法售睹。
??靜態(tài)文件默認位于/wwwroot
目錄下桩警,若要更改位置,可用StaticFileOptions
類來進行配置昌妹。
- 例
??Startup類配置靜態(tài)文件參數捶枢。目錄為/wwwroot/extLibs/js映射后相對URL為/js。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
StaticFileOptions sfoption = new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(env.WebRootPath, "extLibs/js")),
RequestPath = "/js"
};
app.UseStaticFiles(sfoption);
app.UseMvc();
}
}
??項目下新建Pages目錄,Pages下添加Index.cshtml堤器。在header元素中引用jquery.js腳本路徑就可以寫為/js/jquery.js嗅虏。
@page "~/"
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
#rect{
background-color:red;
position:relative;
float:left;
width:100px;
height:100px;
margin:8px
}
</style>
<script type="text/javascript" src="/js/jquery.js"></script>
</head>
<body>
<div>
<button id="btnstart">向右移動</button>
<button id="btnreset">重置</button>
</div>
<div>
<div id="rect"/>
</div>
<script type="text/javascript">
$("#btnstart").click(() => {
$("#rect").animate({
left: 150
}, 600);
});
$("#btnreset").click(() => {
$("#rect").css("left", 0);
});
</script>
</body>
</html>
開啟目錄瀏覽功能
??目錄瀏覽功能允許客戶端查看某個Web目錄下的子目錄和文件列表,可以直接查看或下載蒜鸡。
- 例
??在 /wwwroot/images 目錄下放置五個.gif文件。ConfigureServices
方法中調用AddDirectoryBrowser
方法注冊服務牢裳。Configure
方法中逢防,調用UseStaticFiles
和UseDirectoryBrowser
。
??UseStaticFiles
和UseDirectoryBrowser
方法參數設置相同蒲讯,但是UseStaticFiles
方法必須調用忘朝,否則客戶端只能瀏覽目錄而不能下載文件。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(env.WebRootPath, "images")),
RequestPath = "/gifs"
});
app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(env.WebRootPath, "images")),
RequestPath = "/gifs"
});
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
}
文件服務
??如果既要瀏覽目錄又要訪問靜態(tài)文件判帮,比較好的替代方案是調用UserFileServer
方法局嘁。它綜合了UseStaticFiles
和UseDirectoryBrowser
方法功能溉箕,參數可通過FileServerOptions
類來設置。
- 例
??在wwwroot
目錄下新建六個文本文件悦昵,ConfigureServices
方法中調用AddDirectoryBrowser
方法肴茄,Configure
方法中調用UserFileServer
方法,EnableDirectoryBrowsing
屬性設置為true
才會提供瀏覽目錄服務但指,不設置的話就相當于提供靜態(tài)文件服務不能瀏覽目錄結構寡痰。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(env.WebRootPath),
RequestPath = "/files",
EnableDirectoryBrowsing = true
});
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
}