日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java jsp Struts2.X 文件上传

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java jsp Struts2.X 文件上传 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/**

*

*操作系統:WIN-XP

*后臺程序:Java

*前端腳本:JavaScript/ExtJs/Html

*?

*做過的嘗試:用form的submit方式提交,在后臺request.getInputStream()取到的值*為null,而*request.getContentLength()是可以正常取值的。用request.getRead()拋出錯誤,request has been *called 網查之后得知,似乎是Struts過濾掉了。另尋他法于是便有了下面代碼。 ? ?

*/

@ParentPackage(StrutsNamespace.PP_JSON)?

@Namespace("")

@Action("savebillfile")?

public class SaveBillFileAction extends SDBaseAction { ?

??

private static final long serialVersionUID = 5156288255337069381L;?

??

? ? private ?String msg;?

? ? private int ErrNo;

? ? private String contentType;?

? ? private File docmentFile;?

? ? private String fileName;?

? ? private Boolean success = false;

? ? private String billtype;

? ? private String billid;

? ?

public String upload() throws Exception {?

? ? Connection con =null;

? ? Statement stm =null;

? ? PreparedStatement pst=null;

? ? ErrNo=0;

? ? msg="";

? ? if(!checkFile())

? ? {

? ? return SUCCESS;

? ? }

? ? if(docmentFile.isFile())

? ? {

? ? FileInputStream in = new FileInputStream(docmentFile);

? ? try{

? ? ? con=ConnectPools.getConnection(getSession());

? ? ? Date dt=new Date();

? ? ? String date = DateFormat.getDateInstance().format(dt);

? ? ? String sSql = "insert into billfiles(billtype,billid,filename,fileext,uploaddate,filesize,opid,filedata)values(?,?,?,?,?,?,?,?)";

? ? ? pst = con.prepareStatement(sSql);

? ? ? pst.setString(1, billtype);

? ? ? pst.setString(2, billid);

? ? ? pst.setString(3, fileName);

? ? ? pst.setString(4, fileName.substring(fileName.indexOf("."), fileName.length()));

? ? ? pst.setString(5, date);

? ? ? pst.setLong(6, in.available());

? ? ? pst.setInt(7, ((EmployInfo)this.getSession().getAttribute("employ")).getId());

? ? ? pst.setBinaryStream(8,in,in.available());

? ? ? pst.executeUpdate(); ? ?

? ? }

? ? catch(Exception e){

? ? ErrNo=1;

? ? ? ?msg=e.getMessage();

? ? }

? ? finally{

? ? try{

? ? pst.close();

? ? stm.close();

? ? con.close();

? ? }catch(Exception e)

? ? {

? ? ErrNo=1;

? ? msg=e.getMessage();

? ? }

? ? }

? ? }

? ?

? ? setSuccess(true);

? ? ? ? return SUCCESS;?

? ? }?

? ? private boolean checkFile() {

// TODO Auto-generated method stub

? ? //檢查文件

? ? ? ? return true;

? ? }

? ? public void setFileName(String fileName) {?

? ? ? ? this.fileName = fileName;?

? ? }?

? ? public void setUploadFileName(String fileName) {?

? ? ? ? this.fileName = fileName;?

? ? }?

? ? public void setUploadContentType(String contentType) {?

? ? ? ? this.contentType = contentType;?

? ? }?

? ? public void setUpload(File docmentFile) {?

? ? ? ? this.docmentFile = docmentFile;?

? ? }?

? ?

? ? public String getMsg() {?

? ? ? ? return msg;?

? ? }?

? ?

? ? public void setSuccess(Boolean success) {

this.success = success;

}


public Boolean getSuccess() {

return success;

}

public void setBilltype(String billtype) {

this.billtype = billtype;

}


public void setBillid(String billid) {

this.billid = billid;

}

public int getErrNo() {

return ErrNo;

}


public void setMsg(String msg) {?

? ? ? ? this.msg = msg;?

? ? }

? ? public void setContentType(String contentType) {?

? ? ? ? this.contentType = contentType;?

? ? }?

}

//到此java代碼全了。。

//接下來是腳本submit之后發現上傳的進度條一直在那里走來走去,我滴個腎,又是一番百度。由于我這不要跳轉,百度上許多方法在我這似乎行不通。。只好改用了Ajax。。

/*

* ?ajax那部分腳本如下

*/

var params={};

Ext.apply(params,{billtype:this.billType});

Ext.apply(params,{billid:this.billId});

Ext.Ajax.request({

? ? ? ? ?url : 'savebillfile!upload.action',

? ? ? ? ?timeout : 10000,

? ? ? ? ?scope : this,

? ? ? ? ?params:params,

? ? ? ? ?isUpload:true,

? ? ? ? ?form:"ufile",/*發現這個form好像有點不一樣。。。ExtJs直接寫出來的form好像有問題?*/

? ? ? ? ?success : function(response)

? ? ? ? ?{

? ? ? ? ? ? ?var str = ???????????? ? ? ? ? ? ? ? ? ? ?response.responseText.substring(response.responseText.indexOf('{'),response.responseText.indexOf('}')+1);//前臺腳本返回來的竟然被<pre>框起來了。好吧,為了正常使用,就手動把json找出來。

? ? ? ? ? ? ??var objFormData = Ext.util.JSON.decode(str);

? ? ? ? ? ? ? ? if(objFormData.ErrNo==0)

? ? ? ? ? ? ? ?{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Ext.Msg.show({

? ? ? ? ? ? ? ? ??title:'提示',

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?buttons:Ext.MessageBox.OK,

? ? ? ? ? ? ? ?msg: '上傳成功!',

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??fn:function(button,e)

? ? ? ? ? ? ? ?{

? ? ? ? ? ? ? ? //上傳成功關閉上傳附件窗口

? ? ? ? ? ? ? ? var window = Ext.getCmp('selectfileid');

? ? ? ? ? ? ? ? window.close();

? ? ? ? ? ? ? ? //刷新列表

? ? ? ? ? ? ? ? var win= Ext.getCmp('billfileid');

? ? ? ? ? ? ? ? var grid = win.findById('billfile_grid');

? ? ? ? ? ? ? ? ? ? ? ?var store = grid.store;

? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ?store.load({

? ? ? ? ? ? ? ? ? ? ? ? ? ?params:params

? ? ? ? ? ? ? ? ? ? ? ?});

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? });

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? });

/*

* 最后貼出form的代碼

*/

var fPanel=new Ext.Panel({

? ? ? ? ? ? layout : 'form',

? ? ? ? ? ? height:40,

? ? ? ? ? ? html:'<form id="ufile" enctype="multipart/form-data">請選擇附件<input type="file" name="upload" size="50"></form>'

? ? ? ? });


轉載于:https://blog.51cto.com/bogy324/1602335

總結

以上是生活随笔為你收集整理的java jsp Struts2.X 文件上传的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。