关于上传文件获取绝对路径(转载)
?name 在Action中对应File[] image 可以改为其他名称
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.Writer;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import org.jsoup.helper.HttpConnection.Response;
import com.jpsycn.kfwggl.common.tools.CopyDataToDatabase;
import com.jpsycn.kfwggl.common.tools.readExcel;
import com.opensymphony.xwork2.ActionSupport;
-----------------------控制层
@SuppressWarnings("serial")
public class UpLoadAction extends ActionSupport{
? ? private File[] image; //上传的文件 name="image"
? ? private String[] imageFileName; //文件名称
? ? private String[] imageContentType; //文件类型
? ? private String savePath;
?
? ? @SuppressWarnings({ "static-access", "unchecked" })
@Override
? ? public String execute() throws Exception {
? ? String msg;
? ? ? ? ServletActionContext.getRequest().setCharacterEncoding("UTF-8");
? ? ? ? List<List<String>> lt=null;
? ? ? ? boolean u=false;
? ? ? ? boolean d=false;
? ? ? ??
? ? ? ? try {
? ? ? ?//取得需要上传的文件数组
? ? ? ?File[] files = getImage();
? ? ? ?if (files !=null && files.length > 0) {
? ? ? ? ? ?for (int i = 0; i < files.length; i++) {
? ? ? ? ? ? ? ?//建立上传文件的输出流, getImageFileName()[i]
? ? ? ? ? ?String url=getSavePath() + "\" + getImageFileName()[i];
? ? ? ? ? ?FileOutputStream fos = new FileOutputStream(url);
? ? ? ? ? ? ? ?//建立上传文件的输入流
? ? ? ? ? ? ? ?FileInputStream fis = new FileInputStream(files[i]);
? ? ? ? ? ? ? ?byte[] buffer = new byte[1024];
? ? ? ? ? ? ? ?int len = 0;
? ? ? ? ? ? ? ?while ((len=fis.read(buffer))>0) {
? ? ? ? ? ? ? ? ? ?fos.write(buffer, 0, len);
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?fos.close();
? ? ? ? ? ? ? ?fis.close();
? ? ? ? ? ?//System.out.println(url);
? ? ? ? ? ?lt=new readExcel().readExcel(url);
? ? ? ? ? ?if(i==0){
? ? ? ? ? ?u=new CopyDataToDatabase().addUser(lt,"TB_USER");
? ? ? ? ? ?}else if(i==1){
? ? ? ? ? ?d=new CopyDataToDatabase().addDepart(lt, "TB_DEPART");
? ? ? ? ? ?}else if(i==2){
? ? ? ? ? ?new CopyDataToDatabase().add_user_depart(lt, "TB_USER_DEPART");
? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}
? ? ? ?if(u==false||d==false){
? ? ? ?msg="faile";
? ? ? ?}else{
? ? ? ?msg="success";
? ? ? ?}
? ? } catch (Exception e) {
? ? msg="faile";
e.printStackTrace();
}
? ? ? ? return msg;
? ? }
? ? public File[] getImage() {
? ? ? ? return image;
? ? }
?
? ? public void setImage(File[] image) {
? ? ? ? this.image = image;
? ? }
?
? ? public String[] getImageFileName() {
? ? ? ? return imageFileName;
? ? }
?
? ? public void setImageFileName(String[] imageFileName) {
? ? ? ? this.imageFileName = imageFileName;
? ? }
?
? ? public String[] getImageContentType() {
? ? ? ? return imageContentType;
? ? }
?
? ? public void setImageContentType(String[] imageContentType) {
? ? ? ? this.imageContentType = imageContentType;
? ? }
?
? ? /**
? ? ?* 返回上传文件保存的位置
? ? ?*?
? ? ?* @return
? ? ?* @throws Exception
? ? ?*/
? ? public String getSavePath() throws Exception {
? ? ? ? return ServletActionContext.getServletContext().getRealPath(savePath);
? ? }
?
? ? public void setSavePath(String savePath) {
? ? ? ? this.savePath = savePath;
? ? }
注:savePath在struts.xml中配置 配置的参数如:Excel 必须在项目中有对应的名称为Excel的文件夹
-----------------struts.xml
<package name="upload1" namespace="/upload1" extends="struts-default">
? ? ? ? <action name="upload1" method="execute">
? ? ? ? ? ? <!-- 要创建/image文件夹,否则会报找不到文件 -->
? ? ? ? ? ? <param name="savePath">/Excel</param>
? ? ? ? ? ? <result name="success">/WEB-INF/system/import/message.jsp</result>
? ? ? ? ? ? <result name="faile">/WEB-INF/system/import/faile.jsp</result>
? ? ? ? </action>
? ? ? ? <action name="u_*" method="{1}">
? ? ? ? <result name="success">/WEB-INF/system/import/Import.jsp</result>
? ? ? ? </action>
? ? </package>
--------------jsp页面
<form id="myForm" enctype="multipart/form-data" method="post">
? ? <table width="100%" border="0" cellspacing="0">
? ? ? ?<tr>
? ? ? ?<td width="20%" nowrap="nowrap" >请选择存放用户的Excel文件:</td>
? ? ? ?<td><input type="file" id="userExcelURL" name="image" /></td>
? ? ? ?</tr>
? ? ? ?<tr>
? ? ? ?<td width="20%" nowrap="nowrap" >请选择存放机构的Excel文件:</td>
? ? ? ?<td><input type="file" ?id="departExcelURL" name="image" /></td>
? ? ? ?</tr>
? ? ? ?<tr>
? ? ? ?<td width="20%" nowrap="nowrap" >请选择存放用户和机构关联关系的Excel文件:</td>
? ? ? ?<td><input type="file" id="userAndDepartURL" name="image"/></td>
? ? ? ?</tr>
? ? ? ?<tr>
? ? ? ?<td> </td>
? ? ? ?<td><input type="button" value="导 入" onclick="check()">
? ? ? ?<input type="reset" value="重 置" class="btn">
? ? ? ?</td>
? ? ? ?</tr>
? ? </table>
? ? </form>
? </body>
?<script type="text/javascript">
?function check(){
?var userExcelURL=$("#userExcelURL").val();
?var departExcelURL=$("#departExcelURL").val();
?var userAndDepartURL=$("#userAndDepartURL").val();
?if(userExcelURL==""||userExcelURL.indexOf(".xls")<0){
?alert("请存放选择用户的Excel文件!");
?}else if(departExcelURL==""||departExcelURL.indexOf(".xls")<0){
?alert("请存放选择机构的Excel文件!");
?}else if(userAndDepartURL==""||userAndDepartURL.indexOf(".xls")<0){
?alert("请选择存放用户和机构关联关系的Excel文件!");
?}else{
?//alert(userAndDepartURL);
?var form=document.getElementById("myForm");
?form.action="<%=basePath%>upload1/upload1.do";
?form.submit();
?}
?
? ?</script>
?
-----------------------------------------
jsp页面不是异步提交 ?所以没有实现弹出对话框告知是否操作成功! ?菜鸟一个,知道的请赐教!
?