`

上传文件到虚拟路径下

 
阅读更多
http://guard.iteye.com/blog/2067316
java web项目有一个上传图片功能,使用的是xheditor插件中的图片上传功能。遇到一个问题:文件上传到服务器上是没问题的,但是重启服务器或者重新部署以后以前上传的图片都会丢失,原因是文件上传到服务器以后需要写到一个真实的磁盘路径下,所以需要有绝对路径,用这种方式获取:
String uploadPath = request.getSession().getServletContext().getRealPath("/uploadImg") ;
这样获取到的是tomcat的安装目录C:\Program Files (x86)\apache-tomcat-6.0.30\wtpwebapps\myProject\uploadImg。每次重启或部署就会覆盖掉tomcat下面的应用程序,肯定是不行的。
        解决办法就是将图片上传到虚拟路径下:
        在tomcat的server.xml文件中host之间添加 <Host> <Context docBase="D:/images" path="/img" /></Host> 然后就可以这样访问了localhost:8080/img/xxx
为了方便应用的迁移,在java代码中最好不要使用绝对路径,所以就用到了配置文件,在src目录下新建一个imgPath.properties文件配置两个键值:
imgPath=/img
imgRealPath=D:\\images
相关配置介绍完就直接上代码:
long fileName=System.currentTimeMillis();
                //TODO 改为properties配置文件的方式获取绝对路径
                ResourceBundle rb = ResourceBundle.getBundle("imgPath", Locale.getDefault());
                String imgPath=rb.getString("imgPath");//相对路径
                String imgRealPath=rb.getString("imgRealPath");//硬盘存放路径
                System.out.println("realPath:"+imgPath+"  realPath:"+imgRealPath);
                File file = new File(imgRealPath);
                if(!file.exists()){
                    file.mkdirs();
                }
                InputStream is=new FileInputStream(filedata);
                File outFile = new File(imgRealPath+"/"+fileName+".jpg");// 输出文件 
                OutputStream os = new FileOutputStream(outFile);
                byte[] buffer = new byte[1024];  
                int len = 0; 
                while ((len=is.read(buffer))!=-1) {
                    os.write(buffer,0,len);
                }
                is.close();
                os.close();
                response.setCharacterEncoding("utf-8");
                out=response.getWriter();
                //TODO 应返回远程机地址
                out.println("{'err':'','msg':'"+imgPath+"/"+fileName+".jpg'}");

以上为主要代码。
分享到:
评论

相关推荐

    jetty虚拟路径设置

    将改文件复制到jetty的路径下,可以启动jetty路径去测试

    Tomcat配置虚拟路径

    一些项目中往往需要上传一些图片文件之类,一般不建议直接保存在数据库内,往往是讲图片等资源保存在服务器的某个文件夹下,传统做法是上传到部署目录下,通过相对路径进行访问。这样当我们系统需要进行升级,进行...

    tomcat配置虚拟路径保存访问图片

    tomcat配置虚拟路径保存访问图片, 一些项目中往往需要上传一些图片文件之类,一般不建议直接保存在数据库内,往往是讲图片等资源保存在服务器的某个文件夹下

    基于SpringBoot结合分布式文件系统FastDFS实现的文件上传实例demo,可拿来直接嵌入到自己的系统中

    三、数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。 四、文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、...

    百度Ueditor编辑控件,修改图片存储路径为虚拟目录的后台文件controller.jsp(无需编译,替换简单设置即可)

    1.百度的ueditor上传控件,在上传图片时,默认只能存储在项目文件夹下,这样tomcat重新部署,有可能之前上传的文件就会丢失。 2.如果想把图片上传到项目目录之外的目录中,直接下载本controller.jsp,替换原...

    spring boot2.0图片上传至本地或服务器并配置虚拟路径的方法

    最近写了关于图片上传至本地文件夹或服务器,上传路径到数据库,并在上传时预览图片。本文通过实例代码给大家分享spring boot2.0图片上传至本地或服务器并配置虚拟路径的方法,需要的朋友参考下

    tomcat 配置图片虚拟路径不起作用解决办法

    由于当时写这个图片上传服务器的功能只是为了练练手,简单的实现后便没有再去管,后来经过道友提醒,图片上传路径不能放置在eclipse的工程目录下,否则后期部署会有很大的不方便,而且每次图片上传结束后,都要刷新...

    Android开发 8.0及以上调用相机/相册,并根据Uri获取图像绝对路径,并进行文件上传

    就不允许在 App 间,使用 file:// 的方式,传递一个 File ,否则就会抛出异常,而provider的作用恰好就是用过 content://的模式替换掉 file://,看上去只是换了个前缀,但其实是有真实路径转为了虚拟路径。...

    springboot文件上传(支持单个和多个)

    使用springboot实现文件的单个和多个上传,并解决系统兼容性及虚拟路径映射等多个问题

    Asp.Net Core 中的“虚拟目录”实现

    写在前面  现在部署Asp.Net Core应用已经不再限制于Windows的IIS上,更多的是Docker容器、各种反向代理来...在Asp.Net MVC中从虚拟路径中存取文件也很简单,如Server.MapPath(“~/Upload/liohuang.jpg”); 但在Asp.N

    基于springboot的前后端分离的文件上传与删除功能

    使用springboot实现多文件上传与删除...windows使用不需要虚拟路径,直接使用真实路径即可,linux采用虚拟路径,部署公网后,上传的文件可通过公网访问。集成项目很简单,只需要添加maven和将controller类复制过去即用

    Struts实现文件上传

    用Struts1.2实现文件上传功能,并且把文件保存在javaweb project的虚拟路径下。利用fileForm 类型上传二进制文件格式和字符串格式数据。

    网站文件在线管理系统(艾恩ASP无组件上传) v1.0

    文件在线管理系统-艾恩ASP无组件上传-SWFUpload上传 1、Ajax无刷新管理 2、映射虚拟目录,安全管理文件 3、扩展Session机制 4、Flash多文件带进度条上传,显示上传速度、用时 5、艾恩ASP无组件上传类 6、下载...

    SpringMVC 文件上传下载

    此上传下载 的 demo 可以自定义路径上传下载,和虚拟路径上传下载,此项目代码中有详细的注释,欢迎大家使用,也欢迎大家提出宝贵的意见和建议

    WLONG3D全功能无组件文件上传系统

    WLONG3D全功能无组件文件上传系统wlup3.4使用说明: 新版本的功能更新: 1、对操作版面作出全面调整,使功能更贴尽...3、系统中用户文件夹和后台上传文件管理是使用虚拟路径的,所以请用户上传到网上再进行测试。

    SA-FileUp 文件上传

    注意必须是真实路径,可以用Server.MapPath来转换虚拟路径。 oFileUp.Form(strFormElement).Save 不能指定文件名喽。 注意:Path属性必须在提到任何表单项之前,建议放在 Set oFileUp = Server.CreateObject(...

    整合ckeditor+ckfinder,解决上传文件路径问题

    现在fckeditor已经改名为ckeditor,上传控件也分离为ckfinder,按照说明文档的默认配置会出现上传路径不正确的情况,因为我们的网站可以通过定义默认网站、虚拟目录、以及放在网站的子目录下进行访问

    ctys0812.rar

    远古采集系统 介绍 安装说明 先解压文件 ...另外注意:程序根目录dbcon.asp文件里数据库路径为物理路径而不是虚拟路径,如果你不知道你空间在服务器的实际路径,请运行目录下1.ASP就知道你空间的物理路径了)

    .NET版本SWFUpload_Beta4

    增加功能: 1.单文件上传后的文件可删除 2.如果单文件上传模式上传的是图片,则有缩略图 更正:列表上传模式,如果... 虚拟目录运行,需要更改js文件的引入路径,还有 相关资源的路径,这个问题将在下一个版本解决

Global site tag (gtag.js) - Google Analytics