标签: static-files

从Jetty中的Web应用程序外的文件夹中提供文件

我在Jetty服务器上有一个Java Web应用程序(Eclipse/OSGI).我希望能够从Web根目录之外的文件夹向我的Web应用程序提供静态文件.在我的Web应用程序中,我还不知道我想要提供的文件的文件名,因此我想在启动Web应用程序时将文件名(和/或路径)作为VM参数.例如:

我有一个图像 - myImg.jpg - 我把它放在服务器文件系统的一个文件夹中,例如root/images/myImg.jpg.我想将此作为VM参数,例如"-DmyImg =/images/myImg.jpg /",以便我可以获取图像并将其显示在我的网页上.我怎么能做到这一点?我可以不创建新的Servlet吗?

在此先感谢您的帮助!

web-services jetty static-files java-ee

7
推荐指数
1
解决办法
9371
查看次数

使用ASP.NET 5提供静态文件的最简单方法是什么?

我正在尝试创建最简单的ASP.NET 5项目来提供静态文件,而不依赖于Visual Studio项目模板.但是,当我请求一个文件时,我只收到一个空的响应.这是我的代码:

project.json:

{
  "wwwroot": "wwwroot",
  "dependencies": {
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta8"
  },
  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  },
  "frameworks": {
    "dnx46": { }
  }
}
Run Code Online (Sandbox Code Playgroud)

Startup.cs:

using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http;

namespace Study.StaticFileServer
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            app.UseStaticFiles();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,有一个包含"downloadme.txt"的"wwwroot"文件夹.

当我运行dnx web并请求文件时,响应为空.为了让这个工作,我必须添加什么?

static-files asp.net-core

7
推荐指数
1
解决办法
5996
查看次数

从 Nginx 代理为 ASP.NET Core SPA 应用程序提供静态文件

众所周知,建议对由应用程序服务器提供服务的 Web 应用程序使用代理服务器。

此外,建议使用代理来提供静态文件。

对于“普通”.NET Core 应用程序,设置很简单。例如:

location /css/ {                        
    root /var/www/my.app.com/wwwroot;        
}   

location /js/ {                        
    root /var/www/my.app.com/wwwroot;        
}   

location /lib/ {                        
    root /var/www/my.app.com/wwwroot;        
}
Run Code Online (Sandbox Code Playgroud)

但是对于 .NET Core SPA 应用程序(使用 Angular),wwwroot 文件夹包含的内容不多,大部分内容都存储在 ClientApp 中。

这是否意味着对于 .NET Core SPA 应用程序,我们必须为了所有“SPA 优点”而牺牲静态文件服务功能,还是 Nginx 仍然可以提供某些类型的静态文件?

performance nginx static-files single-page-application asp.net-core-2.2

7
推荐指数
0
解决办法
994
查看次数

如何在 FastAPI 中提供静态文件

我正在尝试提供 package_docs 目录中的静态文件。当我在浏览器中打开时:

http://127.0.0.1:8001/packages/docs/index.html,页面正在运行。

但是我想打开页面:http : //127.0.0.1 : 8001/packages/docs/

没有源文件。输出是 404 Not Found

app.mount("/packages/docs", 
    StaticFiles(directory=pkg_resources.resource_filename(__name__, 'package_docs')
    ), 
    name="package_docs")

@app.get("/packages/docs/.*", include_in_schema=False)
def root():
    return HTMLResponse(pkg_resources.resource_string(__name__, "package_docs/index.html"))


app.include_router(static.router)
app.include_router(jamcam.router, prefix="/api/v1/cams", tags=["jamcam"])
Run Code Online (Sandbox Code Playgroud)

如何更改我的代码?任何建议都会有所帮助。先感谢您。

routes pkg-resources static-files python-3.x fastapi

7
推荐指数
4
解决办法
8600
查看次数

如何以编程方式禁用iis 6中的Etags

我试图在iis 6上关闭Etags因为我加载了多个服务器,我不希望etag成为问题.

iis-6 metadata static-files

6
推荐指数
1
解决办法
1271
查看次数

允许用户更改模板的最佳方法是什么?

在我的一个项目中,我的用户将拥有我网站的专用部分({username} .example.org).在该子域中,我计划允许他们轻松地更改设计.我看了一些已经做过的在线网站,比如Tumblr,PosterousShopify.

关于这个应用程序的语言,我用Django开始,我成功实现了"基于url名称的模板呈现,默认为回退"(http://someuser.example.com将在templates/someuser /中加载模板)*或在模板/通用/*中如果没有在第一个中找到).但是如果它们更适合我的需要,我可以将它导出到PHP或Play!Framework.

使用的模板引擎是Jinja2,因为它像Django模板引擎一样简单,易于学习和安全(没有Python coode可以(通常应该!)执行).

以下是我发现的每种解决方案的优缺点.我真的很感激你对此的看法以及你会采取哪种方式,为什么.谢谢.

注意:用户将对HTML/CSS有很好的了解.

改变变量(如标题颜色等)

  • 优点:

    1. 简单安全
  • 缺点:

    1. 太有限了,想要个性化他的网站的用户将无法使用此解决方案

只上传CSS

  • 优点:

    1. 易于集成
    2. 安全
  • 缺点:

    1. 有限
    2. 存储用户图像的位置?(徽标,背景,一些渐变等)

允许用户编辑模板(存储在数据库中)

  • 优点:

    1. 变化更重要
    2. 用户(几乎)可以自由地做任何他想做的事情(实现GA,FeedBurner等)
  • 缺点:

    1. 他们把静态文件放在哪里(logo,background-image,一些特效(渐变))?
    2. 模板存储在数据库中,对于每个显示的页面,需要多一个SQL请求

允许用户编辑模板(存储在文件中)

  • 优点:

    1. 变化更重要
    2. 用户(几乎)可以自由地做任何他想做的事情(实现GA,FeedBurner等)
    3. 可以启用FTP访问,在用户的模板目录中生根.
  • 缺点:

    1. 静态文件也存在同样的问题

另外,我遇​​到的问题是如何处理静态文件(图像,css,js):我看不到如何在Apache(或NGinx)中定义一个虚拟主机,它会请求数据库查看哪个用户属于这个网址.

谢谢你的帮助,我感谢!

templates static-files

6
推荐指数
1
解决办法
905
查看次数

在Application_BeginRequest期间检查静态文件?

我有一个Global.asx文件,需要进行自定义身份验证,审核和分析.这是必需的,因为它支持基于SAML的SSO系统,需要覆盖正常的.Net身份验证(不支持SAML或混合身份验证)

我不想启动它的静态文件,如.js,.css,.png,等

在Cassini/WebDev和IIS7中确实如此.

我想要的是一些简单的检查,比如this.Request.IsStaticFile(不幸的是,它不存在)来识别静态文件.

我意识到编写它会相当简单,但感觉就像已经存在的东西 - IIS已经为静态文件应用了缓存策略等等.

我需要一个代码解决方案,而不是IIS配置更改一个.

更新

这是我目前的解决方法:

/// <summary>Hold all the extensions we treat as static</summary>
static HashSet<string> allowedExtensions = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
{
    ".js", ".css", ".png", ...
};

/// <summary>Is this a request for a static file?</summary>
/// <param name="request">The HTTP request instance to extend.</param>
/// <returns>True if the request is for a static file on disk, false otherwise.</returns>
public static bool IsStaticFile(this HttpRequest request)
{
    string fileOnDisk = …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc static-files global-asax

6
推荐指数
1
解决办法
3596
查看次数

配置ASP.NET Core应用程序的正确顺序是什么?

我有一个带有几个Web Api控制器的ASP.NET Core应用程序.我不知道是否有一些连接,但应用程序是使用VS2015更新2创建的,现在我正在使用VS2015更新3.所以我创建了另一个Web Api控制器,当有一个查询到该控制器时有这个例外:

System.NotSupportedException: The given path's format is not supported.
   at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
   at System.IO.Path.GetFullPath(String path)
   at Microsoft.AspNet.FileProviders.PhysicalFileProvider.GetFullPath(String path)
   at Microsoft.AspNet.FileProviders.PhysicalFileProvider.GetFileInfo(String subpath)
   at Microsoft.AspNet.StaticFiles.StaticFileContext.LookupFileInfo()
   at Microsoft.AspNet.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNet.Cors.Infrastructure.CorsMiddleware.<Invoke>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Microsoft.AspNet.Diagnostics.Entity.MigrationsEndPointMiddleware.<Invoke>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at …
Run Code Online (Sandbox Code Playgroud)

c# configuration static-files asp.net-web-api asp.net-core

6
推荐指数
1
解决办法
814
查看次数

如何使用 ManifestStaticFilesStorage 从哈希中排除路径

我参与了一个使用白噪声来提供静态文件的应用程序。它被配置为使用CompressedManifestStaticFilesStoragewhich 依次使用ManifestStaticFilesStorage.

我所说的静态文件是指我们提供的静态文件,以及第三方的传单等库。

该类ManifestStaticFilesStorage由 Django 提供,将重命名文件名以包含哈希值。用于缓存清除。它过滤资源并更改对文件的未散列引用以包含散列。

这又破坏了传单中的一个功能:

_detectIconPath: function () {
    var el = DomUtil.create('div',  'leaflet-default-icon-path', document.body);
    var path = DomUtil.getStyle(el, 'background-image') ||
               DomUtil.getStyle(el, 'backgroundImage'); // IE8

    document.body.removeChild(el);

    return path.indexOf('url') === 0 ?
        path.replace(/^url\([\"\']?/, '').replace(/marker-icon\.png[\"\']?\)$/, '') : '';
}
Run Code Online (Sandbox Code Playgroud)

问题是 的值path看起来像:

url("https://example.org/static/path/leaflet/dist/images/marker-icon.2273e3d8ad92.png")
Run Code Online (Sandbox Code Playgroud)

由于文件名不匹配,第二次替换不会执行任何操作。这又将返回:

https://example.org/static/path/leaflet/dist/images/marker-icon.2273e3d8ad92.png")
Run Code Online (Sandbox Code Playgroud)

当传单尝试将文件名附加到这个“目录”时,我们得到:

https://example.org/static/path/leaflet/dist/images/marker-icon.2273e3d8ad92.png")marker-icon.png
Run Code Online (Sandbox Code Playgroud)

这显然是错误的。

那么解决办法是什么呢?我被告知我们不应该尝试对第三方包的文件名进行哈希处理,否则可能会出现其他损坏。但是,我没有看到任何选项来ManifestStaticFilesStorage排除某些目录被散列。

我创建了以下课程来尝试解决此问题。我在设置中引用此类而不是CompressedManifestStaticFilesStorage.

class MyStorage(CompressedManifestStaticFilesStorage):
    """ This class overrides the built in class and turns off file name hashing …
Run Code Online (Sandbox Code Playgroud)

django static-files django-staticfiles leaflet

6
推荐指数
1
解决办法
865
查看次数

ReactJS:如何防止浏览器缓存静态文件?

我正在使用 ReactJS 处理我的项目,并create-react-app用于创建我的应用程序。构建项目后,我使用我的服务器为build文件夹提供服务。当我更新我的应用程序时,用户的浏览器仍然使用我应用程序的旧版本,因为它缓存了静态文件(js、css)。那么有什么办法可以防止浏览器缓存静态文件呢?谢谢 !

caching static-files browser-cache reactjs create-react-app

6
推荐指数
1
解决办法
2万
查看次数