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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Sring3MVC页面无刷新上传文件

發布時間:2024/1/17 c/c++ 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sring3MVC页面无刷新上传文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Sring3MVC頁面無刷新上傳文件

??? 首先,這個框架是利用Ajax與Ctroller進行表單提交和數據交互的,但是Ajax是無法支持File上傳的,所以在這里我使用了隱藏的Iframe來做文件上傳的數據交互。(嘿嘿,是新手哦,有什么沒說正確的,請大蝦們指點指點)

1.配置Spring

支持web應用程序的文件上傳功能,是由spring內置的即插即用的MultipartResolver來實現的,這些解析器都定義在org.springframework.web.multipart包里。下面將使用 CommonsMultipartResolver解析器來實現簡單的文件上傳功能。

基于項目的要求,我這里是在app-context.xml配置的:

?

  • <!--?上傳文件?-->?
  • ????<bean?id="multipartResolver"?class="org.springframework.web.multipart.commons.CommonsMultipartResolver">?
  • ????????<!--?以字節為單位的最大上傳文件的大小?-->?
  • ????????<property?name="maxUploadSize"?value="9999999999999"?/>?
  • ????</bean>?
  • ?

    ?

    2.創建一個controller(控制器)來處理文件上傳請求,FileUploadController.java:

    ?

  • @Controller?//聲明該類為控制器類 ?
  • public?class?FileUploadController?implements?ServletContextAware{?//實現ServletContextAware接口,獲取本地路徑 ?
  • ?
  • ?private?ServletContext?servletContext; ?
  • ?
  • ?public?void?setServletContext(ServletContext?servletContext)?{?//實現接口中的setServletContext方法 ?
  • ??this.servletContext?=?servletContext; ?
  • ?}? ?
  • @RequestMapping("uploadTransferFile.do") ?
  • ??public?void?uploadTransferFile(@RequestParam("fileUpload")?CommonsMultipartFile?mFile, ?
  • ?????????????????????????????????@RequestParam(value="file_ID",?required?=?true,?defaultValue?=?"")?String?file_ID, ?
  • ?????????????????????????????????Writer?writer ?
  • ?????????????????????????????????)?throws?Exception?{ ?
  • BaseModel?outModel?=?new?BaseModel(); ?
  • ????//?獲取登錄信息 ?
  • ????SerUser?serUser?=?GlobalThreadLocal.getSerUserInfo(); ?
  • ????if?(serUser?==?null)?{ ?
  • ??????writer.write(showFileMsg("您未登錄或登錄過期,請重新登錄!")); ?
  • ??????return; ?
  • ????} ?
  • ????//驗證文件大小??判斷是否小于10M ?
  • ????long?size?=?mFile.getSize(); ?
  • ????if(size?/?10?>?1024*1024)?{ ?
  • ??????writer.write(showFileMsg("對不起,您上傳的文件太大,請重新上傳")); ?
  • ??????return; ?
  • ????} ?
  • ????//驗證文件類型 ?
  • ????String?fileType?=?mFile.getOriginalFilename().substring(mFile.getOriginalFilename().lastIndexOf("."),?mFile.getOriginalFilename().length()).toLowerCase(); ?
  • ????//上傳文件 ?
  • ????DateFormat?df?=?new?SimpleDateFormat("yyyyMMddHHmmssSSSS"); ?
  • ????String?fileName?=??file_ID?+?"_"?+?df.format(new?Date()); ?
  • ????// ?
  • ????if(mFile.isEmpty()){ ?
  • ??????writer.write(showFileMsg("上傳失敗!")); ?
  • ??????return; ?
  • ????} ?
  • ????// ?
  • //????String?path?=?this.servletContext.getRealPath(merchantConfig.getFileUploadPath());??//獲取本地存儲路徑 ?
  • ????String?path?=?merchantConfig.getFileUploadPath()?+?"/TransferBill/"; ?
  • ????File?filePath?=?new?File(path); ?
  • ????//如果文件夾不存在則創建????? ?
  • ????if(!filePath.isDirectory())?????? ?
  • ????{??????? ?
  • ??????filePath.mkdir();???? ?
  • ????}?? ?
  • ????File?file?=?new?File(path?+?fileName?+?fileType);?//新建一個文件 ?
  • ????try?{ ?
  • ?????mFile.getFileItem().write(file);?//將上傳的文件寫入新建的文件中 ?
  • ????}?catch?(Exception?e)?{ ?
  • ?????logger.debug("exception:",e); ?
  • ?????writer.write(showFileMsg("上傳失敗!發生異常:"+e.getMessage())); ?
  • ?????return; ?
  • ????} ?
  • ????//提交路徑 ?
  • ????String?fileUrl?=?merchantConfig.getFileUploadPath().substring(11,merchantConfig.getFileUploadPath().length())?+?"/TransferBill/"?+?fileName?+?fileType; ?
  • ????riskManager.uploadTransferFileUrl(file_ID,?fileUrl); ?
  • ????// ?
  • ????writer.write(showFileMsg("文件上傳成功!")); ?
  • ????outModel.setRetCode(BaseModel.RET_OK); ?
  • ????return;?
  • 這里是寫一個Writer來調用JSP頁面的一個JS函數:

    ?

  • /** ?
  • ?*?文件上傳返回消息 ?
  • ?*?@param?msg ?
  • ?*?@return ?
  • ?*/?
  • public?static?String?showFileMsg(String?msg)?{? ?
  • ??String?result?=?"<html><head><meta?http-equiv=\"Content-Type\"?content=\"text/html;?charset=UTF-8\"?/></head><body>"?+ ?
  • ??????"<script?language=JavaScript>window.parent.fileUploadSuccessCallBack('"+?msg?+"');</script>"?+ ?
  • ??????????"<body></html>"; ?
  • ??return?result; ?
  • }?
  • ?

    3.JSP頁面(這里是重點)

    主要是在這個JSP頁面加一個隱藏的Iframe:

    ?

  • <iframe?name="hideIframe"?style="display:none"></iframe>?
  • 然后在文件上傳的表單里使用這個隱藏的Iframe來做表單返回的頁面:
    ?

  • <form?id="fileForm"?action="${ctx}/risksys/uploadWaybillFile.do"?enctype="multipart/form-data"?method="post"?target="hideIframe">?
  • ????????????????<input?type="hidden"?id="file_waybillId"?name="file_waybillId"?value="'+waybillId+'"?/>?
  • ????????????????<table?width="350"?border="0"?cellpadding="0"?cellspacing="0">?
  • ????????????????<tr><td?width="300"?class="dingdan_shahu"></td>?
  • ????????????????<td?class="order_xx"></td></tr>?
  • ????????????????<tr><td?class="dingdan_shahu">上傳文件:</td>?
  • ????????????????<td?class="order_xx"><span?id="showFile"><input?type="file"?name="fileUpload"?id="fileUpload"?/></span></td></tr>?
  • ????????????????<tr><td?class="dingdan_shahu"></td>'+ ?
  • ????????????????<td?class="order_xx"><span?style="color:red;">*注:文件大小請控制在10M以內</span>?
  • ????????????????</td></tr>?
  • ????????????????</table></form>?
  • 4.JS代碼

    這里是被調用的函數:

    ?

  • // ?
  • ????function?fileUploadSuccessCallBack(msg)?{ ?
  • ????????removeLoading(true); ?
  • ????????getInfo(msg); ?
  • ????????findPage(currentPageNo); ?
  • ????}?
  • ?

    ?

    ?

    ?

    ?

    轉載于:https://blog.51cto.com/peterz2011/929183

    總結

    以上是生活随笔為你收集整理的Sring3MVC页面无刷新上传文件的全部內容,希望文章能夠幫你解決所遇到的問題。

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