图片上传处理架构

图片上传因为Form表头是
<form name="form1" action="../multipartformtransfer.jsp" method="post" enctype="multipart/form-data">

这样就不能用Jsp的通用request.getParameter()来获得参数,但是我们可以做一个类似这样的接口,比如叫Mrequest.getParameter();

最重要的是,我们还要对上传图片进行处理,图片文件名改名;转移到指定目录;图片如果超过特定长宽可以自动压缩,这些功能处理完成后,再将其他非file字段原封不动的传出。

我使用两个类 一个jsp来完成这些工作:
public abstract class MultipartFormHandle{
这是完成上述图片各种处理功能。
public class Multipartformtransfer extends MultipartFormHandle{
这是结合特定应用的一些处理,比如移动文件等。
还有一个Multipartformtransfer.jsp

<%@ page import="mysite.utils.*" %>
<jsp:useBean id="myEnv" scope="session" class="mysite.web.UserEnvFront"/>
<jsp:useBean id="Multipartformtransfer" scope="application" class="mysite.web.Multipartformtransfer"/>


<%
//Remember transfer uploaded logo picture from homedir to userdir !!!!!
Multipartformtransfer.init(Multipartformtransfer.getTMPUploaddir(),request);

String forward=Multipartformtransfer.getForwardProgram();
if (forward.equals(""))
{
out.println("no forward program");
return;
}
String param=Multipartformtransfer.getForwardProgramParam();
Multipartformtransfer.clear();

response.sendRedirect(forward+"?"+param);

%>

这个Jsp的scope是appliction,适合集中处理系统中所有有关图片上传功能,可适合多批图片同时上传。相当于servlet.

看看一个client Jsp程序如何调用:
<FORM METHOD="POST" ACTION="multipartformtransfer.jsp" ENCTYPE="multipart/form-data" name="frmSelection" onSubmit="return validate()">
<input type="hidden" name="<%=Multipartformtransfer.FORWARDNAME%>" value="<%=request.getRequestURI()%>">
<input type="file" name="logo" size="20" style="font-family:verdana; font-size:11px">
<input type="hidden" name="<%=Multipartformtransfer.MAXWIDTHPARAMNAME%>" value="120" >
<input type="hidden" name="<%=Multipartformtransfer.MAXHEIGHTPARAMNAME%>" value="120" ><br>
<input type="Image" src="images/buildsite_button_next.gif" onMouseOver="this.style.cursor='hand'">
</form>

这个form的action是Multipartformtransfer.jsp,参数forward也是自己,意思是让Multipartformtransfer.jsp处理好图片后,再原封不动的转发回来。这是我们就可以和正常方式一样使用request.getParameter()来处理form中的参数了。

我也在研究图片上传的问题
有个问题想请教

如何把一张上传后的图片做成较小的缩略图?
java中如何打开图片,然后缩小图片,然后保存为另一张小图,请指教.

我有专门文章介绍,近期我会将此功能增加到jive(J道)版本中,请注意相关通告,也欢迎你加入jive的开发中来

能否告知图片缩小介绍文章的地址?
我目前正在研究jive系统,已经基本熟悉其框架和设计模式

有个问题,能否细致的分析一下jive采用proxy模式的好处呢?

已经找到您关于图片缩小的文章
谢谢

关于linux上要安装x11支持的问题
是否只要任何版本的linux装过xwindow支持就可以使用java.awt的包,反之就不行?
那么java.swing的包呢是否也是一样?

那篇文章在 http://www.jdon.com/idea/imagedeal.htm

Jive中采取proxy模式做用户权限验证,这种做法已经是通用做法,现在系统中都有authoriztion proxy, 相当于在客户端和你的后台系统之间加一个网关。动态proxy做这个可能更具备通用性一点。

关于这方面的文章,可以很容易在google里找到。对了,忘记了,google不能用了。唉...

你的文章说“该程序由于使用到Java 的AWT,虽然没有显示,但是在linux系统下,程序需要X11 windows的支持.需要安装 XFree86
或XFree86-Xvfb ,加入 export DISPLAY=hostdomain:0.0

现在这个问题解决了么?在windows下还用这样做么?