javaEE 非项目目录下的资源文件如何访问

xuhesheng 2020-06-17 02:12:06
正常情况下,D:/ABCD是我的tomcat下一个叫做ABCD的项目的主目录
D:/ABCD/a.jpg这个资源文件,可以通过http://IP:PORT/ABCD/a.jpg来访问
那D:/ABCD目录以外的文件如何被访问呢?
我要让别人能够访问我这个服务器上其他位置的文件.例如播放视频,播放音频等.
那么前端后端要如何进行具体处理可以播放视频音频?
或者告知这种跨目录访问的技术叫什么名字?
...全文
4932 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2020-07-20
  • 打赏
  • 举报
回复
引用 3 楼 xuhesheng 的回复:
[quote=引用 2 楼 如此美丽的你 的回复:] springboot

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter{

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/ABCD/**").addResourceLocations("file:D:\\ABCD\\");
    }
}
registry.addResourceHandler("/D/**").addResourceLocations("file:D:/"); 这是我实际使用的代码 http://IP:PORT/ABCD/D/BX.jpg 却不能访问,404错误. 但是我D:/BX.jpg是真实存在的. 这个是为什么[/quote] 根据实际情况修改一下不就好了 registry.addResourceHandler("/ABCD/D/**").addResourceLocations("file:D:/");
vswen5 2020-06-23
  • 打赏
  • 举报
回复
1.配置tomcat 给一个静态资源地址 2.代码读取文件返回数据
qq_39936465 2020-06-22
  • 打赏
  • 举报
回复
引用 12 楼 xuhesheng 的回复:
[quote=引用 11 楼 qq_39936465 的回复:] 配置有个 *.jpg 的拦截器,启动实现类,用实现类调用该jpg
这种配置和@Configuration的没有区别,注解能用的,配置文件也是同种配置的不同方式而已. 但是不能动态定义目录,这个跟我的需求不符. [/quote] 我晕了,你可以在拦截器的实例类中用get方法获取url,然后自己截取需要的字段。我估计这种方法安全性有问题,所以框架里可能不会提供。
maradona1984 2020-06-22
  • 打赏
  • 举报
回复
懒人的话,直接手写也可以
xuhesheng 2020-06-22
  • 打赏
  • 举报
回复
引用 11 楼 qq_39936465 的回复:
配置有个 *.jpg 的拦截器,启动实现类,用实现类调用该jpg
这种配置和@Configuration的没有区别,注解能用的,配置文件也是同种配置的不同方式而已. 但是不能动态定义目录,这个跟我的需求不符.
qq_39936465 2020-06-19
  • 打赏
  • 举报
回复
配置有个 *.jpg 的拦截器,启动实现类,用实现类调用该jpg
qq_39936465 2020-06-19
  • 打赏
  • 举报
回复
引用 8 楼 xuhesheng 的回复:
[quote=引用 6 楼 qq_39936465 的回复:] 可以在页面上设置资源文件的链接,点链接转到文件。
你这个适合下载这种功能.但是我现在是用户在看到我这个视频或者图片的时候,能够点击查看图片或播放视频. 所以我就希望能直接生成链接或者去配置映射信息.这样,我就能直接交给浏览器去处理了.而不是我手动去输出一个流给img的src用[/quote] 可以在项目中添加本地资源映射,然后调用。
xuhesheng 2020-06-19
  • 打赏
  • 举报
回复
引用 7 楼 如此美丽的你 的回复:
1.去除内嵌tomcat <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 去除内嵌tomcat --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> 2.排除springboot配置 @SpringBootApplication public class MyApp extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MyApp.class,args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MyApp.class); } } 3.看下你的配置类是否加了@configuration注解
我直接用的springmvc而不是boot 注解肯定是写了. 但是还是不能访问.........我最希望用这种搭配映射的方法使用本地的文件. 但是未能成功.一直是404
xuhesheng 2020-06-19
  • 打赏
  • 举报
回复
引用 6 楼 qq_39936465 的回复:
可以在页面上设置资源文件的链接,点链接转到文件。
你这个适合下载这种功能.但是我现在是用户在看到我这个视频或者图片的时候,能够点击查看图片或播放视频. 所以我就希望能直接生成链接或者去配置映射信息.这样,我就能直接交给浏览器去处理了.而不是我手动去输出一个流给img的src用
qq_39936465 2020-06-18
  • 打赏
  • 举报
回复
引用 5 楼 xuhesheng 的回复:
我把资源设定的这段代码写在ABCD这个项目里,是想通过URL的方式访问其他盘符下的资源. 而且不就应该是写在ABCD这个项目里么?我这个是tomcat,直接http://IP:PORT/D/BX.jpg,这个路径肯定找不到啊.因为没有D这个项目啊.
可以在页面上设置资源文件的链接,点链接转到文件。
xuhesheng 2020-06-18
  • 打赏
  • 举报
回复
引用 4 楼 qq_39936465 的回复:
[quote=引用 3 楼 xuhesheng 的回复:] registry.addResourceHandler("/D/**").addResourceLocations("file:D:/"); 这是我实际使用的代码 http://IP:PORT/ABCD/D/BX.jpg 却不能访问,404错误. 但是我D:/BX.jpg是真实存在的. 这个是为什么
http://IP:PORT/ABCD/D/BX.jpg http://ip 这是网络地址 port 这里是端口号 /abcd 是项目文件夹 你这里已经到项目文件夹了,后面接D盘符怎么可能找到? [/quote] 我把资源设定的这段代码写在ABCD这个项目里,是想通过URL的方式访问其他盘符下的资源. 而且不就应该是写在ABCD这个项目里么?我这个是tomcat,直接http://IP:PORT/D/BX.jpg,这个路径肯定找不到啊.因为没有D这个项目啊.
qq_39936465 2020-06-18
  • 打赏
  • 举报
回复
引用 3 楼 xuhesheng 的回复:
registry.addResourceHandler("/D/**").addResourceLocations("file:D:/"); 这是我实际使用的代码 http://IP:PORT/ABCD/D/BX.jpg 却不能访问,404错误. 但是我D:/BX.jpg是真实存在的. 这个是为什么
http://IP:PORT/ABCD/D/BX.jpg http://ip 这是网络地址 port 这里是端口号 /abcd 是项目文件夹 你这里已经到项目文件夹了,后面接D盘符怎么可能找到?
xuhesheng 2020-06-18
  • 打赏
  • 举报
回复
引用 2 楼 如此美丽的你 的回复:
springboot

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter{

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/ABCD/**").addResourceLocations("file:D:\\ABCD\\");
    }
}
registry.addResourceHandler("/D/**").addResourceLocations("file:D:/"); 这是我实际使用的代码 http://IP:PORT/ABCD/D/BX.jpg 却不能访问,404错误. 但是我D:/BX.jpg是真实存在的. 这个是为什么
如此美丽的你 2020-06-18
  • 打赏
  • 举报
回复
引用 4 楼 qq_39936465 的回复:
[quote=引用 3 楼 xuhesheng 的回复:]
registry.addResourceHandler("/D/**").addResourceLocations("file:D:/");
这是我实际使用的代码
http://IP:PORT/ABCD/D/BX.jpg
却不能访问,404错误.
但是我D:/BX.jpg是真实存在的.
这个是为什么


http://IP:PORT/ABCD/D/BX.jpg

http://ip
这是网络地址

port 这里是端口号

/abcd 是项目文件夹

你这里已经到项目文件夹了,后面接D盘符怎么可能找到?

[/quote]
1.去除内嵌tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 去除内嵌tomcat -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>

</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>



2.排除springboot配置
@SpringBootApplication
public class MyApp extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(MyApp.class,args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(MyApp.class);
}
}

3.看下你的配置类是否加了@configuration注解
如此美丽的你 2020-06-17
  • 打赏
  • 举报
回复
springboot

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter{

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/ABCD/**").addResourceLocations("file:D:\\ABCD\\");
    }
}
  • 打赏
  • 举报
回复
把你的文件路径在你的应用服务保存。当有人访问某个文件时,你的应用服务去正确的路径下读取这个文件,返回给访问者。
这是一个实际使用中的项目,可访问 http://cdbke.cuit.edu.cn 可查看效果及功能,后台需要登录后才能使用(出于安全性考虑这里就不给大家介绍了,另外还有一个struts1版本的,如有需要可以与我联系)。 此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿google人名自动补全;头像上传剪切压缩处理。 包含有完整的jar包和源代码,可以直接下载编译部署和运行,这是专门为我们实验室定制开发的。虽然后台逻辑并不复杂,但已经包含了架构基于s2sh技术型系统的全部基础部分:如分页,缓存,文件上传,连接池等。很适合学习使用,希望对初学JavaEE WEB开的人有所帮助。 这个源在去年发布了第一版,已经有很多朋友下了觉得对他们有帮助,所以我才再发了一个第二版,希望对有需要的朋友有所帮助。本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范检查,代码审查等功能(与此相关的jar包由于上传文件大小限制未导入) 本系统一直在使用中,所以还会不段更新,之后我打算再做一个基于javaee6的实现,给需要想学习ejb3.1等技术的朋友一个参考实现 集成测试相关jar包和更新构建脚本下载:http://download.csdn.net/source/2427972

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧