DWR3 文件上传 , 搞了一天才解决,汗!!!

需注意的地方是java方法中的参数必须是BufferedImage,InputStream,FileTransfer三种中其中一个,

一般推荐使用FileTransfer,可以获取文件名、文件类型、和内置的inputStream。

dwr.xml

<create javascript="fileUtils" creator="new"> <param name="class" value="cn.xyurp.bggl.common.FileUtils"></param> </create>

业务类

public class FileUtils { /** * 文件上传 * * @return */ public String upload(FileTransfer fileTransfer, String fileName) { try { WebContext webContext = WebContextFactory.get(); // String realtivepath = webContext.getServletContext().getContextPath() // + "/upload/"; String saveurl = webContext.getHttpServletRequest().getSession() .getServletContext().getRealPath("/upload"); File file = new File(saveurl + "/" + fileName); if (!file.exists()) { file.mkdirs(); } InputStream uploadFile = fileTransfer.getInputStream(); int available = uploadFile.available(); byte[] b = new byte[available]; FileOutputStream foutput = new FileOutputStream(file); uploadFile.read(b); foutput.write(b); foutput.flush(); foutput.close(); uploadFile.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch(Exception e){ e.printStackTrace(); } return ""; } }

html

// 注意 upload 只能用 dwr.util.getValue() 取值,
// 如果用 jquery $("#id") 等其他方式取的值作为参数, 上传将会上传失败

<mce:script type="text/javascript" src="<%=path%><!-- /dwr/engine.js"> // --></mce:script> <mce:script type="text/javascript" src="<%=path%><!-- /dwr/util.js"> // --></mce:script> <mce:script type="text/javascript" src="<%=path%><!-- /dwr/interface/fileUtils.js"> // --></mce:script> -------------------------------- function addFile(){ // 注意 upload 只能用 dwr.util.getValue() 取值, // 如果用 jquery $("#id") 等其他方式取的值作为参数, 上传将会上传失败 var uploadFile = dwr.util.getValue("uploadFile"); fileUtils.upload(uploadFile,'fileName.ext',function(data){ alert(data); }); } <input type="file" name="uploadFile" id="uploadFile"/> <input type="button" class="f_btn01" οnclick="addFile()" value="上传"/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值