java上传图片的图片为啥在tomcat下,我想存在项目的upload下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java上传图片的图片为啥在tomcat下,我想存在项目的upload下相关的知识,希望对你有一定的参考价值。

java上传图片的图片为什么在tomcat下,我想存在项目的upload下,我想在获取的绝对地址就是tomcat下,
我用的CommonUpload方法

request.getServletContext().getRealPath("/"); 得到你的项目的部署目录,然后我们可以使用它作为基准点再使用相对目录找到其它目录下去创建你的 upload 子目录,一般我们建议把“数据”放在“程序”所在的目录之外,比如不是直接放在 $tomcat/webapps/myapp/upload 下而是 $tomcat/appdata/myapp/upload 这种目录结构。如果数据不在程序的目录下,以后我们重新部署程序时可以简单地直接把程序目录删除就可以了,数据在另一个地方不受影响。追问

我是想放在项目里,不是tomcat下, 再一个我获得的是tomcat部署的目录,我怎么获取到项目的目录呢

追答

你说的”项目目录“是指什么,在 Eclipse workspace 中的源码的目录 ?如果是这个源码的目录,那是不可能的,我们必须用参数来解决。

Java 中可以通过 System.getProperty("my.data.dir") 这种方式来读取从命令行 java.exe -Dmy.data.dir=C:/abc/data 这样设置的参数,这个时候我们就可以把eclipse 中源码位置当成参数传递给它。在tomcat 设置中(开始菜单》Apache Tomcat ?.0 》Configure Tomcat 中的 JVM 参数中加上 -Dupload.dir=D:/workspace/myapp/upload 这样的参数。

参考技术A 配置虚拟路径,和tomcat下的update映射就可以了,在service.xml中加上这句,写在最下面的Context标签上面就行,docBase就是真实的路径,path是虚拟路径,映射tomcat中的update,
注意往数据库存路径和读取路径的时候,加上相应的真实路径,具体说不太清楚,自己试一下就明白了
<Context crossContext="true" docBase="/home/xxx/upload" path="/upload" reloadable="true"/>追问

可以细说一下吗,刚做这,具体技术好不明白

追答

tomcat中的update每次重启数据库的时候,里面的东西都会被清空的,所以映射一个虚拟路径就可以了,就是上面说的那样,在tomcat服务器Service中的service,xml中配置那句话就可以了,原来有一个总结的,这两天U盘坏了,东西全丢了,没办法给你看了,你就按我说的试一试,在数据库中就单独存一个文件名就可以了,在前台页面读取的时候,可以在路径前加一个“/update”就可以了。

本回答被提问者采纳

Java图片上传

最近闲来无事,就整理常用的功能,以下是项目中图片上传的功能,将图片上传到服务器tomcat下,数据库中存放相对路径,大家一起学习。

环境:eclipse jdk1.7 tomcat7 maven3.5

步骤:

@RequestMapping(params="upLoadPicture") 

    @ResponseBody

    public String addFilemsgPic(MultipartFile file,HttpServletRequest request) throws Exception{

        

        String path="../Manage_ssm/upLoadPicture";

        

        //创建文件 

        File dir=new File(path);

        if(!dir.exists()){

            dir.mkdirs();

        }

        

        String username=(String) request.getSession().getAttribute("userName");

        //返回原来在客户端的文件系统的文件名

        String fileName=file.getOriginalFilename();

        //username+后缀名

    

        String img=username+fileName.substring(fileName.lastIndexOf("."));//zhao.jpg

        FileOutputStream imgOut=new FileOutputStream(new File(dir,img));//根据 dir 抽象路径名和 img 路径名字符串创建一个新 File 实例。

        

        imgOut.write(file.getBytes());//返回一个字节数组文件的内容

        imgOut.close();

        Map<String, String> map=new HashMap<String, String>();

    

        String rpath = path+"/"+img;

        map.put("rPath",rpath);

        JSONObject jsonObject = JSONObject.fromObject(map);//将json字符串转换为json对象

        String r=jsonObject.toString();

        String s=URLEncoder.encode(r, "utf-8");//加密

        return s;

    }
@RequestMapping(params="pictureToDb") 

    @ResponseBody

    public int pictureToDb(String src,HttpServletRequest request){

    

       

        String newSrc = src.replace(" ", "+");

        int flag=ConnOrcl.connToTable(newSrc,request);

        if(flag==1)

            return 1;

        else

            return 2;

    }
public class ConnOrcl {
    
        private static Connection conn;  
        private static Statement stat;  
        private static String driver = "oracle.jdbc.driver.OracleDriver";  
        private static int SUCCESS=1; 
        private static int FILE=2; 
        public static int connToTable(String file,HttpServletRequest request)  
        {  
            try  
            {  
                //数据库连接  
                Class.forName(driver);  
                conn = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "GKBMFZXT", "GKBMFZXT");  
                stat = conn.createStatement();  
               
                String username=(String) request.getSession().getAttribute("userName");             
                String sql="update user_table set picture='"+file+"' where user_name='"+username+"'";      
                stat.execute(sql.toString());  
                   
                return SUCCESS;
            }  
            catch(ClassNotFoundException e)  
            {  
                e.printStackTrace();  
            }  
            catch(SQLException e)  
            {  
                e.printStackTrace();  
            }  
            finally  
            {  
                if(null != stat)  
                {  
                    try   
                    {  
                        stat.close();  
                    }   
                    catch (SQLException e)  
                    {  
                        e.printStackTrace();  
                    }  
                }  
                if(null != conn)  
                {  
                    try   
                    {  
                        conn.close();  
                    }   
                    catch (SQLException e)   
                    {  
                        e.printStackTrace();  
                    }  
                }  
            }  
            return FILE;
        } 
}
<script src="js/ajaxfileupload.js"></script>
<script type="text/javascript">
function upload(){
    
    var file="file";
    var picElement=document.getElementById(file).value;
    
    var picFormat=picElement.substring(picElement.lastIndexOf('.')+1,picElement.length);
    if(picFormat!="jpg"){
        alert("请选择jpg 格式的文件!");
        return;
    }
    $.ajaxFileUpload({
             url:"user.do?upLoadPicture",
           secureuri: false,
           fileElementId:file,
           dataType: 'JSON',
           success:function(data){
                  data=decodeURIComponent(data);//解码
                  var arr=JSON.parse(data);//JSON.parse() 方法解析一个JSON字符串            
                $("#fsrc").val(arr.rPath);         
                 $.post(
                        "user.do?pictureToDb&src="+$("#fsrc").val(),    
                        function(data){
                            //data=decodeURIComponent(data);
                            //var arr=JSON.parse(data);
                            if(data==1){
                            alert("上传成功!");
                            }else{
                            alert("上传失败!");
                            }
                        }
                    ); 
        },
        error: function (){
               alert("上传失败!当前时间为:"+new Date().toLocaleTimeString());
          
       }
    });
};
function findFile(){
    document.getElementById("file").click();
}

以上是关于java上传图片的图片为啥在tomcat下,我想存在项目的upload下的主要内容,如果未能解决你的问题,请参考以下文章

关于ueditor1.1.8图片上传功能,求大神看看下面的代码为啥没用,我是想单独调用图片上传动能

关于图片上传到tomcat问题

java web应用用户上传图片的存储地址

为啥我在论坛上传图片附件时总是有个来自网页的提示

笔记之_java整理kindeditor文件上传插件

图片怎么上传到tomcat服务器,tomcat服务器如何构建