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

相关推荐

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

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

    在html页面使用JavaScript实行文件上传到本地服务器并获取文件所在路径

    使用JavaScript实现文件上传到本地服务器并获取到上传后文件所在路径,是由到JavaScript,java以及html页面。这个比较好,不是在jsp上获取路径,jsp太简单了,而且过时了,所以就在html页面实现了下功能,我主要是做...

    .net百度编辑器图片路径修改为服务器路径

    用户在编辑器中插入图片时,默认会保存图片的本地路径,但这在服务器环境中是无效的,因此需要将图片上传到服务器并修改编辑器中的图片路径为服务器路径。 实现这一功能,我们需要以下步骤: 1. **图片上传**:在...

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

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

    unity通过http上传图片到服务器

    在Unity游戏开发中,有时我们需要将用户在游戏中生成的截图或者数据发送到服务器进行存储或处理。这个过程通常涉及到网络通信,特别是HTTP协议的使用。本文将详细讲解如何在Unity中利用HTTP请求上传图片到服务器,...

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

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

    android上传照片到服务器

    在Android开发中,将照片上传至服务器是一项常见的需求,尤其在社交应用或者云存储服务中。这个场景中,我们可以通过Android SDK提供的API结合网络请求库(如HttpClient或OkHttp)来实现。以下是一些关键的知识点: ...

    关于Java文件路径问题

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

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

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

    android选择图片或拍照图片上传到服务器(包括上传参数)

    最近要搞一个项目,需要上传相册和拍照的图片,不负所望,终于完成了! 不过需要说明一下,其实网上很多教程拍照的图片,都是缩略图不是很清晰,所以需要在调用照相机的时候,事先生成一个地址,用于标识拍照的图片...

    IOS上传图片到服务器

    在iOS开发中,将图片上传到服务器是一项常见的需求,尤其在移动应用中,用户可能需要分享照片或保存数据到云端。本教程将详细介绍如何在iOS应用程序中实现这一功能,并提供服务器端Python代码作为参考,使用Flask...

    本地上传图片到服务器,代码简单易懂

    在IT行业中,本地上传图片到服务器是一项常见的任务,特别是在开发Web应用、移动应用或任何需要用户上传内容的系统时。本篇文章将详细讲解如何通过Java编程语言实现这一功能,主要涉及图片文件的读取、数据流处理...

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

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

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

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

    多张图片上传到服务器

    在IT行业中,多张图片上传到服务器是一项常见的需求,尤其在社交媒体、电商平台或者内容管理系统等应用中。这个“多张图片上传到服务器”的项目提供了一个示例,它可以帮助开发者理解并实现这一功能。通过分析标题和...

    修改百度的UEditor,实现图片上传到项目外的路径

    以上就是关于修改UEditor配置,使其支持复制图片原链接以及上传图片到非项目路径的方法。这个功能对于那些需要与第三方存储服务集成或希望在不同环境中管理资源的应用来说尤其有用。在实际应用中,你可能还需要考虑...

    winform上传文件到服务器

    本教程将深入探讨如何使用WinForm实现文件或文件夹的上传功能,将其发送到远程服务器。我们将关注的重点是如何构建这样的系统,包括客户端的交互设计以及与服务器的通信。 首先,我们需要在WinForm中创建一个用户...

    java中生成xml文件,并上传至ftp服务器

    JAVA中生成xml文件到指定路径和上传到ftp服务器到指定路径的方法。

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

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

    易语言post图片上传

    2. **读取图片文件**:获取到图片文件路径后,程序需要读取图片内容。易语言提供了读取文件的函数,例如`读文件`,可以将图片文件读入内存。 3. **编码图片数据**:图片文件通常以二进制格式存在,为了通过HTTP协议...

Global site tag (gtag.js) - Google Analytics