jsp上传文件是不是都在用别人编写好的代码,有自己来编写的吗?
我想知道,jsp上传的服务器中的原理。
------解决方案-------------------------------------------------7d62ae1e1c0126
Content-Disposition: form-data; name= "textfield2 "; filename= "H:\图2.jpg "
Content-Type: image/pjpeg
JFIF ` ` C
$. ' ",#(7),01444 '9=82 <.342 C
2!!22222222222222222222222222222222222222222222222222 ?@ "
-----------------------------7d62ae1e1c0126
Content-Disposition: form-data; name= "textfield "
-----------------------------7d62ae1e1c0126
Content-Disposition: form-data; name= "Submit "
提交
-----------------------------7d62ae1e1c0126--
这是文件上传的接收格式,希望对你有帮助
------解决方案--------------------UP
------解决方案--------------------看看代码,自己研究一下吧,挺简单
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception{
//
ActionMessages mess=new ActionMessages();
String dir=servlet.getServletContext().getRealPath( "/upload ");
File scfile=new File(dir);
if(!scfile.exists()){
scfile.mkdir();
}
HtmlFileForm hff=(HtmlFileForm)form;
FormFile file=hff.getFile();
String flname=file.getFileName();
if(flname==null||flname.equals( " ")){
this.setFileErrorMessage( "请选择你要上传的图片 ");
request.setAttribute( "error1 ", this.fileErrorMessage);
return mapping.findForward( "failure ");
}
//判断文件类型
int imgType=flname.lastIndexOf( ". ");
String imgTypeStr=flname.substring(imgType);
//将文件名处理成当天日期+随即数
String date=DNSUtility.getCurrentYeanMonthDay();
String[] dateStr=date.split( "/ ");
String dateName=dateStr[0]+dateStr[1]+dateStr[2];
Random random = new Random();
int rdInt=random.nextInt(1000000000);
String rdStr=String.valueOf(rdInt);
String fname=dateName+rdStr+imgTypeStr;
//保存到数据库
String urlTemp= "./upload/ ";
String picUrl=urlTemp+fname;
//判断文件大小
if(file.getFileSize()> 2097152){
this.setSizeErrorMessage( "对不起,请查对您上传的图片是否正确(文件 已经超过2M)! ");
request.setAttribute( "error2 ", this.sizeErrorMessage);
return mapping.findForward( "failure ");
}
//判断文件类型
if(!imgTypeStr.equals( ".jpg ")&&!imgTypeStr.equals( ".gif ")&&!imgTypeStr.equals( ".jpeg ")&&!imgTypeStr.equals( ".png ")&&!imgTypeStr.equals( ".swf ")){
this.setTypeErrorMessage( "对不起,请查对您上传的图片类型! ");
request.setAttribute( "error3 ",this.typeErrorMessage);
return mapping.findForward( "failure ");
}
String size=Integer.toString(file.getFileSize())+ "bytes ";
InputStream streamIn=file.getInputStream();
OutputStream streamOut=new FileOutputStream(dir+ "/ "+fname);
int bytesRead=0;
byte[] buffer=new byte[8192];
while((bytesRead=streamIn.read(buffer,0,8192))!=-1){
streamOut.write(buffer, 0, bytesRead);
}
streamOut.close();
streamIn.close();
hff.setFname(fname);
hff.setSize(size);
file.destroy();
this.pictureComponentsService.insertPi