精华内容
下载资源
问答
  • 使用Tomcat上传图片文件 1.配置springmvc.xml的文件解析器 <!-- 文件解析器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> &...

    一.使用Tomcat 上传图片文件

    1.配置springmvc.xml的文件解析器

     <!-- 文件解析器 -->
    	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    		<!-- 上传文件的大小 -->
    		<property name="maxUploadSize">
    			<value>#{10*1024*1024}</value>
    		</property>
    	</bean>

    2.在jsp页面提交图片文件

    		<!-- enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码,这里设置二进制编码,提交方式必须为post。 -->
    	
    		<form class="form-horizontal" action="admin/goodsadd.action"
    			method="POST" enctype="multipart/form-data">
    			<div class="form-group">
    				<label class="control-label col-sm-2 col-sm-offset-2">商品名</label>
    				<div class="col-sm-5">
    					<input class="form-control" type="text" 
    						name="gname" placeholder="请输入商品名"/>
    				</div>
    			</div>
    		
    		
    			<div class="form-group">
    				<label class="control-label col-sm-2 col-sm-offset-2">商品图片</label>
    				<div class="col-sm-5">
    					<input  type="file" 
    						name="pic" placeholder="请输入商品图片"/>
    				</div>
                    <!-- 类型设置为file文件类型 -->
    			</div>
    		
    			<div class="form-group">
    				<div class="col-sm-5 col-sm-offset-4">
    					<input class="btn btn-success" type="submit" value="添加">
    				</div>
    			</div>
    			
    			
    			
    		</form>

    3.在Controller层对文件进行保存处理

        /*
    	 * 添加商品
    	 */
    	@RequestMapping("goodsadd.action")
    	public ModelAndView goodsAdd(Goods goods, MultipartFile pic, HttpServletRequest request) {
            //MultipartFile类来接收文件
    		System.out.println(pic);
    
    		// 文件名, 生成一串随机的东西, 作为文件名, 获取图片的扩展名,UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法。UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,
    		String fileName = UUID.randomUUID().toString();
    		//得到上传时的文件名,当然不包括路径
    		String subfix = pic.getOriginalFilename();
    		//截取文件后缀类型.jpg/.png
    		subfix = subfix.substring(subfix.lastIndexOf("."));
            //组合后的新文件全名
    		fileName = fileName + subfix;
    
    		// 获取项目的实际运行路径
    		String path = request.getServletContext().getRealPath("/upload");
    		System.out.println(path);
    
    		try {
                //保存图片到相应路径
    			InputStream inputStream = pic.getInputStream();
    			OutputStream outputStream = new FileOutputStream(path + "/" + fileName);
    			IOUtils.copy(inputStream, outputStream);
    
    			// 如果文件保存成功, 将图片路径 写入Goods对象中
    			goods.setGpic(fileName);
    			goods.setGstatus(0);
    			
    			// 将Goods写入数据库
    			iGoodsService.add(goods);
    
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    		ModelAndView mv = new ModelAndView();
    
    		mv.setViewName("redirect:goods.action");
    
    		return mv;
    	}

    4.对图片进行显示

    <td><img src="upload/${goods.gpic}" width="50px" height="50px"></td>

    5.结果:

    (1)图片存放路径为:D:\java\apache-tomcat-7.0.92\webapps\SSM\upload( String path = request.getServletContext().getRealPath("/upload"); )

    也就是保存到了tomcat里webapp下面了,图片可以正常显示

    (2)重启tomcat后:图片丢失,原因是每一次重启服务器,都会使tomcat重新部署一次项目,会覆盖掉原来的文件,导致图片丢失

     

    二.图片丢失问题解决

    1.原因:

    我们在Java代码中上传图片时,图片的路径是通过代码

    request.getSession().getServletContext().getRealPath("/img")

    来获取路径的,而这句代码返回的路径是tomcat中webapps目录下的工程路径,图片就直接保存到了tomcat中。

    当我们重新发布工程的时候,tomcat其实是先将原来的工程删掉,然后再将改动过的新的工程放上去。而改动过的新的工程师来自与我们eclipse的工作空间中的工程,这就也难怪了,因为我们是把图片直接上传到的tomcat服务器下,而不是放到工作空间的工程目录下,自然重新部署后图片就没了。
     

    2.解决方法:

    (1)修改项目的发布路径,不发布在tomcat的webapps下面,这样就不会成为临时文件了,但是不发布在webapp下面需要配置一些东西让tomcat能找到你的工程。

    我现在项目发布的路径 Deploy path 是发布到tomcat/webapps下面,不用额外配置信息。因此修改发布路径来让图片永久保存还没实现,dalao可以去baidu自己实现。

    (2)更改图片存放位置 + 配置虚拟路径显示

    <1>首先:我们图片存放位置不放在webapps下

    
    //String path = request.getServletContext().getRealPath("/upload");
    //System.out.println(path);
    String path = "D:/java/upload";
    

    直接将图片资源存放在tomcat之外即可,运行项目图片可以存储

    <2>那么怎么访问这个图片呢?

    <img src="D:/java/upload/${goods.gpic}" width="50px" height="50px">

    显然,这样是不行的,src无法访问绝对路径。

    因为:现在的浏览器为了安全起见,不允许直接加载本地资源

     

    我们使用tomcat配置虚拟映射路径,就是说配置一个假路径,其实正真访问的是另一路径。

    附上参考网址:https://www.jianshu.com/p/c8379584feb4

    1、配置tomcat服务器路径如下图:

    其中:path是url映射,Document Base是实际存储的绝对路径,此操作让tomcat认识该路径。

     

    2、修改Tomcat的server.xml文件

    在tomcat/conf/server.xml里面的Host标签下,追加说明:

    <Context docBase="D:\java\upload" path="/upload" reloadable="true"/>

    path:访问该web应用的URL入口

     

    docBase:指定 Web 应用的文件路径。


    reloadable:如果这个属性设为 true,tomcat 服务器在运行状态下会监视在WEB-INF/classes 和 WEB-INF/lib 目录下 class 文件的改动,如果监测到有 class 文件被更新的,服务器会自动重新加载 Web 应用。


    crossContext:如果想在应用内调用 ServletContext.getContext()来返回在该虚拟主机上运行的其他 web application 的 request dispatcher,设为 true。在安全性很重要的环境中设为 false,使得 getContext()总是返回 null。缺省值为 false。


    Debug:与这个 Engine 关联的 Logger 记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为 0。

     

    3.修改图片源地址为:

    <img src="/upload/${goods.gpic}" width="50px" height="50px">

    重启Tomcat服务器,图片正常显示。

     

    4.注意:

    Windows系统下path路径不要用“\”,因为tomcat会以为这是个真实路径,不会去替换虚拟路径了,Linux系统下一定要保证docBase路径存在,不然Tomcat会无法启动。

    path :是虚拟路径,即用网址形式访问时的路径,一定要加“/”。

    docBase: 是实际路径,表示映射文件夹路径,即你的服务器中文件的磁盘绝对路径。(图片路径不要出现中文!!!)

    展开全文
  • 我在百度云上搭建了一个web服务器,有一个上传图片功能,上传的路径是this.getServletConfig().getServletContext().getRealPath("/") + "uploads\\";我通过web上传了一张a.jpg图片,按照我本地测试的上传路径应该...
  • 上传的图片丢失 该如何解决体会 出现这样的原因是用户把上传的图片放在 项目的目录下 当我们修改项目或者重新部署项目时 此时项目的图片目录下 还没有图片 这样重新部署项目到tomcat的服务器中 之前项目上传的图片会...

    体会 出现这样的原因是用户把上传的图片放在 项目的目录下 当我们修改项目或者重新部署项目时 此时项目的图片目录下 还没有图片 这样重新部署项目到tomcat的服务器中 之前项目上传的图片会被后部署的项目覆盖 图片也就没有了

    解决策略 1,如下图

    在这里插入图片描述
    ##第一步 在tomcat中的webapps中创建一个临时文件夹 我这里是叫做 temp (存放图片 )
    ##第二步 在eclipse项目目录中找到servers 打开它 找到server.xml打开
    ##第三步 复制 图中画黑线的一行 修改docBase 复制刚才创建的temp文件夹路径 修改path="/temp" 完活
    ##第四步 如果想在前端显示图片 路径可以写 /temp/图片名 即可 如下图
    在这里插入图片描述

    ###第一次发 不喜勿喷

    展开全文
  • 由于图片过多,占用很多无用空间,想把没用的图片删除了。首先导出了一份数据库文件.sql,存放在/data目录中。 defined('ABSPATH') or define('ABSPATH', rtrim ( $_SERVER ['DOCUMENT_ROOT'], '/' ) ); defined...
    由于图片过多,占用很多无用空间,想把没用的图片删除了。首先导出了一份数据库文件.sql,存放在/data目录中。
    LostPictures.php
    <?php
    defined('ABSPATH') or define('ABSPATH', rtrim ( $_SERVER ['DOCUMENT_ROOT'], '/' ) );
    defined('NETADDRESS') or define ( 'NETADDRESS', 'http://' . $_SERVER['HTTP_HOST']);
    class LostPictures{
    	private  $img_dir;               //图片存放文件名(如果多个文件,用array('upload','ueditor'))
    	private  $sql_dir;			     //数据库文件(.sql)存放文件名		
    	private  $lost_img = array();    //丢失与无用的图片路径
    	
        public function __construct($img_dir, $sql_dir) {
    	  $this->img_dir = $img_dir;
    	  $this->sql_dir = $sql_dir;
        }
    	
    	//丢失与无用的图片列表
    	public function lostList(){
    		 header("Content-type: text/html; charset=utf-8"); 
    		  $sql_fiel = ABSPATH . $this->sql_dir; 
    		  if(is_array($this->img_dir)){
    			  foreach($this->img_dir as $val){
    				 $this->searchDir(ABSPATH . '/' . $val ,$this->lost_img);  
    			  }
    		  }else{
    				$this->searchDir(ABSPATH . '/' . $this->img_dir ,$this->lost_img);			  
    		  }
    		  if(file_exists($sql_fiel)){
    		       $array = array();
    			$content = file_get_contents($sql_fiel);
    			$content = str_replace('\\\\\\', '', $content);      //百度编辑器中...title=\\\"1467862183958179.jpg\\\"...alt=\\\"腰椎间盘突出.jpg\\\"
    			$patt = '/[\'"][\/]?([^0-9][a-zA-Z0-9_\/]*?\.(?:jpg|png|gif|jpeg))[\'"]/';//不以数字、不是中文的图片路径
    			preg_match_all($patt, $content, $mat);
    				for($i=0;$ilost_img))){
    						$array['丢失'][] = $mat[1][$i];			      //数据库中丢失的图片(文件夹中没有这些图片)
    					}
    				}
    				for($i=0;$ilost_img);$i++){
    					if(substr($this->lost_img[$i],-3)=='jpg'||substr($this->lost_img[$i],-3)=='png'||substr($this->lost_img[$i],-3)=='gif'||substr($this->lost_img[$i],-3)=='jpeg'){
    						if(!in_array($this->lost_img[$i],array_values($mat[1]))){
    							$array['无用'][] = $this->lost_img[$i];		 //文件夹中无用的数据图片
    						}
    					}
    				}
    					echo "
    ".print_r($array,true)."
    ";exit; //打印出丢失与无用的图片 }else{ echo 'sql文件不存在'; } } //读取目录及子目录下所有文件名 private function searchDir($path,&$data){ if(is_dir($path)){ $dp=dir($path); while($file=$dp->read()){ if($file!='.'&& $file!='..'&& $file!='.svn'){ $this->searchDir($path.'/'.$file,$data); } } $dp->close(); } if(is_file($path)){ $data[]=$path; } } }
    abc.php
    <?php
    require_once './LostPictures.php';
    $lp = new LostPictures(array('ueditor','upload'),'/data/jxjhgk20170626.sql');
    $lp->lostList();



     

     

    展开全文
  • 以我上传的图片文件为例 第一步 、把之前写的文件上传的路径改为本地文件夹(路径中不要有中文字符),(原来的服务器中的文件夹不要删除) 例如,我原先上传到服务器的文件夹名称为upload 我修改的是: “D:...

    解决办法之一,虚拟路径映射。把要上传的文件直接上传到本地文件夹,而不是上传到服务器中

    以我上传的图片文件为例

    第一步

    、把之前写的文件上传的路径改为本地文件夹(路径中不要有中文字符),(原来的服务器中的文件夹不要删除)
    例如,我原先上传到服务器的文件夹名称为upload
    在这里插入图片描述
    我修改的是:
    “D:\FamousUpload”
    在这里插入图片描述

    第二步、

    找到tomcat安装目录,找到conf下面的web.xml文件,用记事本打开,修改方法如下:
    在这里插入图片描述

    第三步:

    修改conf下面的server.xml文件,用记事本打开,找到Host标签
    在这里插入图片描述
    第一处修改就和图上一样即可
    第二处修改,(如果没有添加一行)其中docBase=“D:\FamousUpload"的值就是文件上传的本地文件夹的路径
    path=”/Famous mall/upload"这里的upload 就是之前服务器下面我们上传文件的文件夹,Famous mall是我们的·项目名。

    其他地方不用修改
    保存所有修改后的文件,重启tomcat。
    这样即使重新部署后,项目也会找到本地文件夹下的文件进行显示。
    在这里插入图片描述

    展开全文
  • 问题一、上传成功了,但必须...问题二、上传到服务器上了,但是每次重启服务器,或者清空缓存图片或者刚上传的文件自动消失了? 原因: 项目每次部署都是从工作空间将项目搬过去,但你重启后者清空缓存,你在Apache服
  • 参考文档做多文件上传的时候,会丢失文件例如上传三张图片,会返回三个保存路径,但是服务器存放图片的文件夹内可能只有两张图片然后开始各种调试,百度...#¥%...^&amp;*直到无意间发现返回路径有重复...经过我...
  • thinkphp多文件上传时,有些时候会出现文件丢失的情况。比如上传多个图片,最终只上传了一个图片。本地测试的时候是正常的,但上传到服务器上就会出现丢失文件这种情况。 原因 查看tp上传类(ThinkPHP\Library\...
  • 问题:服务器重新部署war包后,项目下上传到服务器图片丢失解决方法:通过tomcat虚拟目录来实现上传文件的分开存储,通过对服务器类型的判断来指定上传路径。Java判断服务器操作系统类型,用来区分本地测试上传...
  • 然后开始上传图片,能成功,能在服务器找到文件夹和相应的文件。但是,重启项目,或者清理缓存之后,图片和文件夹就会自动被删除,不见了。 先说解决办法吧,后面在分析: 1.把/tomcat/webapps/目录清空,删掉该...
  • 某天服务器在运行时客户发现存储上一个NAS卷中的数据丢失,卷大小为4T,主要数据类型为office文件,PDF文档文件,图片文件(JPG、JPEG、PNG等),视频文件(MP4、AVI等),音频文件(MP3等)。管理员随即关闭系统...
  • django部署后css js 文件丢失的问题 环境 服务器:阿里云服务器 系统:centos7 部署方式:nginx+uwsgi+django 问题 无论自己的还是django自带的后台管理,图片可以加载出来,但是css,js无法加载,而且通过谷歌浏览...
  • 某天服务器在运行时客户发现存储上一个NAS卷中的数据丢失,卷大小为4T,主要数据类型为office文件,PDF文档文件,图片文件(JPG、JPEG、PNG等),视频文件(MP4、AVI等),音频文件(MP3等)。管理员随即关闭系统...
  • 问题:APP将文件上传到服务器上并且上传到的是项目内的地址是没问题的,但是因为重新部署或Tomcat突然犯抽导致需要重装什么的,以前上传的图片文件可能会丢失。可以将文件图片上传到项目外,可以采用配置T...
  • 今天把自己的django项目部署到了IIS服务器上,跟着网上的教程做,到最后一切都很顺利,网站也可以访问到,但是所有的图片和样式什么的静态资源都加载不出来,一看浏览器几十个报错。 因为是第二次犯这个错误了,就...
  • 很多的web项目中都会涉及...所以,将图片从web项目中分离出来,建立一个独立的图片服务器是很有必要的,下面给一个简单的图片服务器接收图片或其它文件的例子和使用URL上传图片文件服务器的例子,支持中文文件名。
  • 通过flat.vmdk、delta.vmdk重建虚拟机背景VM虚机服务器文件介绍新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格...
  • 最近将项目部署在阿里云服务器上,在mongodb中存储的图片以及数据都没了. 白天添加的数据,到了第二天,所有数据都没有. 原因 在mongodb的db中出现一个如下名字的库: READ_ME_TO_RECOVER_YOUR_DATA 结果去查了下发现...
  • 以前只是知道项目部署到tomcat上的时候,图片视频等文件需要单独搭建一个服务器,不能简单的保存在WEB-INF目录下,否则每次重启tomcat,这些信息都会丢失。但是从来没自己 实践过。今天学习一下。一、准备工作 1....
  • thinkphp多文件上传时,有些时候会出现文件丢失的情况。比如上传多个图片,最终只上传了一个图片。本地测试的时候是正常的,但上传到服务器上就会出现丢失文件这种情况。   原因 查看tp上传类(ThinkPHP\Lib
  • thinkphp多文件上传时,有些时候会出现文件丢失的情况。比如上传多个图片,最终只上传了一个图片。本地测试的时候是正常的,但上传到服务器上就会出现丢失文件这种情况。 原因 查看tp上传类(ThinkPHP\Li...
  • 上一篇介绍了Java web项目中把客户端上传的图片保存到服务器中web工程下的指定文件夹里,但是这样存在一个弊端:因为保存图片的文件夹在项目工程文件下,所以,当项目文件更新版本的时候,就会覆盖掉原来保存图片的...
  • 我们平时在日常项目中经常会遇到图片的上传和访问的情景,平时我们可能习惯于把图片传到...ps:当然目前一些大的项目,会有多个子系统都用到文件上传和下载,这时搭建文件服务器是最好的选择。 上传的实现请看...
  • 使用jQuery来检测远程图片文件是否存在 最近为我的憨豆人笑园添加图片功能时,遇到了这个问题,用户可以填写一个远程的图片地址,也可以上传一个本地图片。为了不浪费服务器的资源,我们需要在客户端先对用户填写...
  • 那么再次打war包发布项目可能会造成图片丢失,每次重启前将图片先保存再copy到服务器明显不方便,这时可以配置图片保存位置,将图片保存到项目外的地方,方法如下:打开tomcat - conf下的server.xml文件,在Host...
  • 1、在properties文件中配置图片回显的路径和服务器图片丢失或者加载失败要展示默认图片的默认路径。 回显的路径: #本地环境路径 image.virtualLocation=file:///F:/works/STSWorkSpace/localpreferences_manager/...
  • 上一篇介绍了Java web项目中把客户端上传的图片保存到服务器中web工程下的指定文件夹里,但是这样存在一个弊端:因为保存图片的文件夹在项目工程文件下,所以,当项目文件更新版本的时候,就会覆盖掉原来保存图片的...
  • 微信公众号新增永久图片素材的接口是: ...type=image 一定要却保公众号的AppId和...$data['media'] = new \CURLFile(realpath('这里是你要新增图片素材在服务器的绝对路径.jpg')); 然后直接用post请求接口即可,一定不要
  • 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。Fayson的github:https://github.com/fayson/cdhproject提示:代码块部分可以左右滑动查看噢1问题重现测试环境1.CDH...
  • 使用 Tomcat 作为服务器的时候,如果将上传文件保存在项目路径下,每次重启服务或者打成 war 包的时候很容易丢失上传的文件,另外就是文件多了,Tomcat容易崩,于是我们配置 Tomcat 把文件保存到项目外的其他磁盘...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 282
精华内容 112
关键字:

服务器图片文件丢失