SSH实现文件上传

1.首先应配置tomcate属性,在/tomcate/conf/service.xml里配置如下:

 <!-- Define the default virtual host
           Note: XML Schema validation will not work with Xerces 2.2.
       -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
<!--
<Context path="/qfcars/file_img" docBase="E:/tomcat-file/tomcat80/qfcars/file_img" debug="0" reloadable="true" />
<Context path="/fupin/images" docBase="D:/tomcat-file/tomcat80/fupin/images" reloadable="true" />
-->
<Context path="/linkms/webImages" docBase="E:/tomcat-file/linkms/upload/webImages" reloadable="true" />
        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--

<!--属性说明      
   name:在此例中一直被强调为$CATALINA_HOME/config/Catalina/localhost中的localhost      
         虚拟主机名      
        debug:是日志的调试等级       
        appBase:默认的应用路径,也就是把应用放在一个目录下,并在autoDeploy为true的情况下,可自动部署应用此路径相对于                   $CATALINA_HOME/ (web applications的基本目录)      
      unpackWARs:设置为true,在Web应用为*.war是,解压此WAR文件.       
       如果为true,则tomcat会自动将WAR文件解压;否则不解压,直接从WAR文件中运行应用程序.      
      autoDeploy:默认为true,表示如果有新的WEB应用放入appBase 并且Tomcat在运行的情况下,自动载入应用       
  -->     

<!--属性说明      
path:访问的URI,如:http://localhost/是我的应用的根目录,访问此应用将用:http://localhost/demm进行操作,此元素必须.       
   表示此web application的URL的前缀,用来匹配一个Context。请求的URL形式为http://localhost:8080/path/*      
      docBase:WEB应用的目录,此目录必须符号Java WEB应用的规范.       
        web application的文件存放路径或者是WAR文件存放路径      
      debug:日志等级       
       reloadable:是否在程序有改动时重新载入,设置成true会影响性能,但可自动载入修改后的文件.      
      如果为true,则Tomcat将支持热部署,会自动检测web application的/WEB-INF/lib       
       和/WEB-INF/classes目录的变化,自动装载新的JSP和Servlet,我们可以在不重起      
      Tomcat的情况下改变web application      
  -->     

2.配置完 .xml文件后,我们需要创建相关的文件。如上1中的文件路径。

E:/tomcat-file/linkms/upload/webImages. tomcate在加载时将会自动获取该目录下的所有图片/文件。

3.配置SSH框架的文件属性。如下:

(1)创建一个upload.property.

(2)在.property里配置:

ueditor.upLoadUrl=E:/tomcat-file/linkms/file_img
EXCEL2003_MAX_SIZE_LIMIT=5242880
localUri = E:/tomcat-file/linkms/upload
fileUri =/webImages
    

//这里使用的是百度编辑器的文件图片上传(设置本地路径,文件名和最大上传文件大小)

4.编写上传文件的action(注这里不讨论model模型的上传文件类,在service上主要是对数据库的增加操作,只需将上传文件的相对路径存到数据库即可!)

/**
* 设置图片logo上传
*/
public String uploadPic(){
String imgUrl="";
try {
String localUri = ApplicationProperties.getMessage("localUri");
String fileUri = ApplicationProperties.getMessage("fileUri");
if(pic !=null && picFileName != null){//上传单张图片
imgUrl=HttpFileUtil.upLoadFileToURI(pic,picFileName, localUri, fileUri);
webObj.setLogo(imgUrl);
}else if (pics != null && picsFileName != null) {//上传多张图片
for (int i = 0; i < pics.size(); i++) {
imgUrl+=HttpFileUtil.upLoadFileToURI(pics.get(i),picsFileName.get(i), localUri, fileUri);
}
webObj.setLogo(imgUrl);
}
} catch (Exception e) {
e.printStackTrace();
}
if(imgUrl.indexOf(",",imgUrl.length()-1)>0){//判断是否是imgurl有多余的,分割符号
imgUrl=imgUrl.substring(0,imgUrl.length()-1);//去掉多余的符号
}
Map<String, Object> jsonMap = new HashMap<String, Object>();
jsonMap.put("imgUrl", imgUrl);
setJsonResult(JSONObject.fromObject(jsonMap));
return SUCCESS;
}
private File pic;
private String picFileName;
public File getPic() {
return pic;
}
public void setPic(File pic) {
this.pic = pic;
}
public String getPicFileName() {
return picFileName;
}
public void setPicFileName(String picFileName) {
this.picFileName = picFileName;
}


 5.前端的显示

<input type="hidden" id="itemlogo" name="webObj.logo" />
<img id="logoPic" width="160px" height="90px" alt="logo" />
<input id="pic" class="easyui-validatebox" type="file" name="pic" onchange="upLogoPic()" />
var select = $('#datagrid_ui_table').datagrid('getSelected');
$("#logoPic").attr("src","." + select.logo);  
//文件上传同时把图片的url赋值给webObj.url
function upLogoPic() {
$("#addForm").attr("enctype", "multipart/form-data");
$("#addForm").form("submit", {
url : 'companyInfoPort!uploadPic.action',
onSubmit : function() {
if ($("#addForm").form("validate"))//校验,显示上传
{
$.messager.progress({
text : "上传中"
});
}
return $("#addForm").form("validate");
},
success : function(data) {
var dataObj = eval("(" + data + ")");//转换为json对象webObj.updateDate
//赋值给图片url,页面进行了隐藏处
$('#itemlogo').val(dataObj.imgUrl);
$.messager.progress('close');
}
});
}

6.在页面上传文件时,浏览器还会弹出一个提示是否下载的提示框,如果我们不想每次下载的时候都出现这个提示框,我们可以在struts中配置如下:

<param name="contentType">text/html</param>

(使用的是jquery - easyui 技术)。

你可能感兴趣的:(SSH实现文件上传)