0 0

关于上传图片到服务器的路径问题!请大家帮一下忙5

在jsp页面上显示服务器的图片:

<img src="http://www.xxxx.com:serverPort/image/gfan.png"  id="myImg"  title="证件照(反面)" />

 这样显示是没有问题的。

我在jsp页面上传图片到该服务器:

<form name="myform" action="upload!uploadfile" method="post"  enctype="multipart/form-data">
<input type="file" id="filePath" name="filePath"/>
<input type="submit"  id="mysubmit" value="上传"/>
</form>

  action:

package com.zhangying.util;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

import com.opensymphony.xwork2.ActionSupport;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class FileUpload extends ActionSupport implements ServletRequestAware,ServletResponseAware{

	/**
	 * author : Jacen
	 * FileUpload Action
	 * upload files from localhost to server
	 */
	private static final long serialVersionUID = 1L;
	private String filePath;
	private String serverPath;
	private HttpServletResponse response;
	private HttpServletRequest request;
	
	public String uploadfile()
			throws Exception {
		
		System.out.println(filePath);    //参数1:本地文件路径
//		System.out.println(serverPath);  //参数2:要上传的服务器路径
		
		String resultPath = ""; // 上传后图片所在的路径
		FileOutputStream out = null; // 文件输出流
		
		try {     // 验证图片上传的格式是否正确
			File f = new File(filePath);
			if (!f.isFile()) {
				throw new Exception(" f不是图片文件!");
			}
			if (f != null && f.exists()) { // 这里的ImageIO属于java工厂类,在工厂类class里面,调用的System.gc(),频繁调用会造成dump,需要考虑优化
				BufferedImage image = ImageIO.read(f); // 读入文件
				if (image != null) {
					BufferedImage tag = new BufferedImage(image.getWidth(),
							image.getHeight(), BufferedImage.TYPE_INT_RGB); // 构造一个类型为预定义图像类型之一的 BufferedImage
					tag.getGraphics().drawImage(image, 0, 0, image.getWidth(),
							image.getHeight(), null); // 绘制所需要尺寸大小的图片
					/*
					 * 以下生成 图片上传后在服务器上的 新路径
					 */
					int lastLength = filePath.lastIndexOf(".");
					String imageName="jacen";  //用用户名来作为上传图片的文件名
					String fileType = filePath.substring(lastLength); // 获取上传图片的类型
					
					resultPath = "http://www.gyswad.com:90/developerCerpic/"+ imageName+ fileType;  //图片在服务器上的地址
					System.out.println(resultPath);
					/*
					 * 进行图片的绘制
					 */
					out = new FileOutputStream(resultPath);
					JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
					JPEGEncodeParam param = encoder
							.getDefaultJPEGEncodeParam(tag);
					param.setQuality(0.95f, true); // 95%图像
					param.setDensityUnit(1); // 像素尺寸单位.像素/英寸
					param.setXDensity(300); // 水平分辨率
					param.setYDensity(300); // 垂直分辨率
					encoder.setJPEGEncodeParam(param);
					encoder.encode(tag);
					tag = null;
				}
			}
			f = null;
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			out.close();
			out=null;
		}
//		request.setAttribute("resultPath", resultPath);
//		return resultPath;
		return "success";
	}

	public String getFilePath() {
		return filePath;
	}

	public void setFilePath(String filePath) {
		this.filePath = filePath;
	}

	public String getServerPath() {
		return serverPath;
	}

	public void setServerPath(String serverPath) {
		this.serverPath = serverPath;
	}

	public HttpServletResponse getResponse() {
		return response;
	}

	public void setResponse(HttpServletResponse response) {
		this.response = response;
	}

	public HttpServletRequest getRequest() {
		return request;
	}

	public void setRequest(HttpServletRequest request) {
		this.request = request;
	}

	@Override
	public void setServletResponse(HttpServletResponse arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void setServletRequest(HttpServletRequest arg0) {
		// TODO Auto-generated method stub
		
	}
	
}

  现在报错:说是空指向异常

finally{
			out.close();
			out=null;
		}

我感觉是resultPath<!--上传图片到服务器的路径-->有问题,请各位帮忙看一下,这里的resultPath到底怎么写?还有,如果各位还有什么更好的方法实现图片上传,请指教。本人新手,一切都略知。

控制台打印的错误信息是这样的:

\temp\upload__daca63c_1399f88364d__8000_00000000.tmp
http://www.gyswad.com:90/developerCerpic/jacen.tmp
java.io.FileNotFoundException: http:\www.gyswad.com:90\developerCerpic\jacen.tmp (文件名、目录名或卷标语法不正确。)
	at java.io.FileOutputStream.open(Native Method)
	at java.io.FileOutputStream.<init>(Unknown Source)
	at java.io.FileOutputStream.<init>(Unknown Source)
	at com.zhangying.util.FileUpload.uploadfile(FileUpload.java:67)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)

 补充:我想将本地图片上传到服务器的d://Apache2.2/temp/image文件夹下面。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2012年9月07日 15:05

5个答案 按时间排序 按投票排序

0 0

采纳的答案

1、private String filePath;  修改为private File filePath 可以直接得到上传的文件;(注意文件名是一个临时文件名 以tmp结尾)
2、private String filePathFileName 可以得到上传的文件名
3、上传文件后默认放到 javax.servlet.context.tempdir 指定的临时目录中, 可以在struts2配置文件添加struts.multipart.saveDir 来指定临时目录

4、软连接 如web应用/upload -----> /Apache/temp/image
5、rootPath = getServletContext().getRealPath("/upload") 得到upload目录
6、resultPath  =rootPath + "/" + filePathFileName;

7、注意上传文件名有重名情况,比如在filePathFileName前边加上时间戳等解决

2012年9月07日 15:14
0 0

引用
String fileType = filePath.substring(lastLength); // 获取上传图片的类型 
                     
                    resultPath = "http://www.gyswad.com:90/developerCerpic/"+ imageName+ fileType;  //图片在服务器上的地址 
                    System.out.println(resultPath);

这里面的resultPath变量有问题,Java无法识别HTTP网址格式的文件路径,jinnianshilongnian 说的方法获取Web项目的路径,然后再
String path = request.getRealPath("");
					File uploadFolder = new File(path + "/upload");
					if (!uploadFolder.exists())
						uploadFolder.mkdirs();
					File file=new File(path + "/upload/" + name);
通过这个路径然后进行文件内容的写入

2012年9月10日 09:26
0 0

ServletActionContext.getServletContext().getRealPath("/")

建议用Struts2的<s:file name ="myFile" id="myFile" label ="Image File" width="124" height="33" border="0" />

在action里定义如下变量,只写

     private File myFile;

    private String contentType;
   
    private String fileName;

这三个变量只写set方法
犹其要注意的一点是:路径后面要有"/"结尾,不然找不到路径

2012年9月07日 17:24
0 0

这段代码把我看晕了,filePath是字符串?File f = new File(filePath);这啥意思....
上传图片到服务器跟上传文件一样的啊,input type=file浏览文件后,点击提交,然后后台从request中获取流,读流保存文件到服务器目录下

2012年9月07日 15:17
0 0

  request.getRealPath("/");//获取服务器路径比如:D:\apache-tomcat-6.0.20\webapps\demo\这个路径、
  //有了这个路径就可以File f=new File(path);

2012年9月07日 15:14

相关推荐

    C# winform上传照片到服务器

    在C# WinForm应用开发中,上传照片到服务器是一个常见的需求,这涉及到客户端与服务器之间的文件传输技术。本文将深入探讨如何实现这个功能,以及如何根据要求修改照片的名字。 首先,我们需要了解C#中的文件操作...

    asp上传代码,直接上传到服务器路径

    在ASP中,上传功能常用于允许用户上传文件到服务器,例如图片、文档等。这个"asp上传代码,直接上传到服务器路径"的主题,涉及到的核心知识点包括: 1. **ASP上传组件**:ASP实现文件上传,通常需要借助服务器端...

    KindEditor 3.5.1(3.5.2一样) asp.net 网站项目 图片上传 路径 问题 和 服务器图片浏览

    但是之后很多人Q我说他的项目始终有问题,我一看结果他用的是“asp.net网站项目”,网站项目和应用程序项目是不同的,虽然都可以,但是路径却有区别,所以在你上传和图片浏览时,都会出错! 为了解决这个问题,本人...

    java上传文件到linux服务器,操作linux服务器上文件,下载linux服务器文件,删除linux服务器文件

    接着,打开一个`Sftp`会话,使用`put()`方法将本地文件上传到服务器。 ```java Sftp sftp = session.openSftp(); sftp.put(本地文件路径, 远程目标路径); sftp.close(); ``` **操作Linux服务器上的文件** ganymed...

    C# WinForm 上传图片 文件到服务器的方法

    ### C# WinForm 上传图片文件到服务器的方法 在C# WinForm开发中,上传文件尤其是图片文件到服务器是一项常见的需求。本文将详细介绍如何利用C#实现这一功能,并结合提供的部分代码示例进行深入解析。 #### 一、...

    【JavaScript源代码】js实现上传图片到服务器.docx

    在JavaScript中实现图片上传到服务器的过程通常涉及到前端的文件选取、本地预览、Base64编码,以及与后端服务器的交互。以下是对这个过程的详细解析: 1. **前端文件选取**: - HTML部分提供了`...

    关于Java文件路径问题

    这篇博客文章“关于Java文件路径问题”可能探讨了Java中处理文件路径的常见挑战和解决方案。 在Java中,文件路径可以是绝对路径或相对路径。绝对路径是从根目录开始的完整路径,它指明了文件的确切位置。相对路径则...

    JSP+Servlet实现文件上传到服务器功能

    本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao、service、servlet 这三层是主要的结构,类似 MVC ...

    winform 图片上传到服务器端 方法

    c/s 客户端PC上传到服务器上的源代码 可以参考参考 用的是webclient

    ASP.NET 上传图片到指定的图片服务器

    ASP.NET 是一种强大的 ...总之,通过 ASP.NET 的 ASHX 处理程序和 `WebClient` 类,我们可以实现从应用服务器到图片服务器的异步图片上传功能。这种设计模式有助于优化系统性能,提高用户体验,同时也便于扩展和维护。

    Android webview打开相册选择图片并上传到服务器,(亲测可用)

    最后,网页端需要有一个JavaScript函数`uploadImage()`接收这个路径,并通过`XMLHttpRequest`或`fetch` API将图片文件上传到服务器。这个过程通常涉及将图片数据转换为`base64`编码或者`FormData`对象,然后发送HTTP...

    java上传图片至服务器并且返回下载URL

    在Java开发中,将图片上传到服务器并返回可下载的URL是常见的功能需求,尤其在Web应用中。这里我们将详细探讨实现这一功能的关键步骤和技术点。 首先,客户端(通常是前端应用)需要通过HTTP请求将图片文件发送到...

    C# WinForm 上传图片 文件到服务器的方法Uploader ashx.txt

    根据提供的文件信息,本文将详细解释如何在C# WinForm应用程序中实现图片文件上传到服务器的功能。这主要包括两部分:一部分是服务器端处理文件上传的`Uploader.ashx`文件,另一部分是客户端用于发送文件的WinForm...

    一个不错的上传图片可以显示上传路径并且修改图片名称

    本文将详细讨论如何实现一个可以显示上传路径并允许修改图片名称的图片上传系统。 首先,我们需要理解标题和描述中提到的关键点:上传图片、显示上传路径以及修改图片名称。这些功能通常涉及到前端界面设计、后端...

    echarts 生成统计图时,自动保存图片到服务器,并使用freemarker生成带图片和循环表格的word

    本项目涉及的关键技术是利用ECharts生成统计图,然后自动保存这些图像到服务器,最后结合Freemarker模板引擎生成包含图片和循环表格的Word文档。 ECharts是一款由百度开发的开源数据可视化库,它提供了丰富的图表...

    pb上传文件到服务器硬盘上

    ### pb上传文件到服务器硬盘上的方法与技巧 在IT领域中,通过编程工具实现文件的远程上传是一项常见的需求。本文将详细介绍如何利用PowerBuilder(简称PB)这一开发工具,实现文件从本地上传到服务器硬盘的过程,并...

    echart生成表格上传图片到服务器

    本项目完整带全部jar包,可直接运行,包含echarts表格绘制,图片上传,base64图片解析,图片写入到excel,导出excel表格,文件下载,使用的是入门级别的技术servlet,博客...

    通过网页上传图片到服务器删的源代码

    6. **删除操作**:关于"通过网页上传图片到服务器删的源代码",这部分可能是指在前端提供一个删除按钮,用户点击后向服务器发送删除请求。服务器根据请求删除对应的文件,并返回确认信息。前端再次更新页面以反映...

    上传图片,可上传至服务器并且可以读取.rar

    在IT行业中,图片上传功能是许多应用程序和服务的基本需求,它涉及到客户端与服务器之间的数据交互,以及文件处理技术。本文将详细解析"上传图片,可上传至服务器并且可以读取.rar"这一主题,涵盖图片上传的流程、...

    WinForm上传文件到服务器

    ### WinForm上传文件到服务器 #### 知识点概述 在.NET Framework中,Windows Forms(简称WinForms)是一种用于创建Windows桌面应用程序的技术。本篇内容介绍如何使用WinForm实现文件的上传功能,即将本地文件传输...

Global site tag (gtag.js) - Google Analytics