java使用ajax完成上傳文件
本文實(shí)例為大家分享了java使用ajax完成上傳文件的具體代碼,供大家參考,具體內(nèi)容如下
使用ajax上傳文件最重要的就是實(shí)例化FormData來進(jìn)行上傳文件:

1、html代碼:
<div class="kuang"> ?? ?<p>文件上傳</p> ?? ?<div class="san3"> ?? ??? ?<input type="file" name="fujianID" id="fujianID" onchange="UpdateFile()"/> ?? ??? ?<input type = "hidden" name="fujianid" id="file2" /> ?? ?</div> </div>
2、ajax請求代碼:
<script type="text/javascript">
//上傳文件
function UpdateFile(){
?? ?var file_fujian = $("input[name='fujianID']").val();//用戶文件內(nèi)容(文件)
?? ?// 判斷文件是否為空?
?? ?if ( file_fujian== "") {
?? ??? ?layer.msg("青選擇上傳的附件",{icon:1,time:1000});
?? ??? ?return false;
?? ?}
?? ?//判斷文件類型,根據(jù)自己需要來做判斷
?? ?/*var fujianID = ?file_fujian.substring( file_fujian.lastIndexOf(".") + 1).toLowerCase();
?? ?if(fujianID != "xls" && fujianID !="xlsx"&&fujianID !="docx"&&fujianID !="doc"&&fujianID !="txt"){
? ? ? ?? ?layer.msg("請選擇Execl文或者word文件或者txt文件格式!",{icon:1,time:2000});
?? ??? ?return false;
?? ?}*/
?? ?//判斷文件大小
?? ?var size1 = $("input[name='fujianID']")[0].files[0].size;
?? ?if (size1>104857600) {
?? ??? ?layer.msg("上傳的附件不能大于100M",{icon:1,time:2000});
?? ??? ?return false;?? ??? ??? ??? ?
?? ?}
?? ?
?? ?boo1 = true;
?? ?var type = "file";
?? ?var formData = new FormData();//這里需要實(shí)例化一個(gè)FormData來進(jìn)行文件上傳
?? ?formData.append(type,$("#fujianID")[0].files[0]);
?? ?$.ajax({
? ? ? ? type:'POST',
? ? ? ? url:'<%=request.getContextPath()%>/login/fujian_file',
?? ??? ?data:formData,
?? ??? ?async:false,
?? ??? ?processData:false,
?? ??? ?contentType:false,
?? ??? ?success:function(data){
?? ??? ??? ?if (data=="error") {
?? ??? ??? ??? ?layer.msg("附件添加失敗",{icon:1,time:2000});
?? ??? ??? ?}else{
?? ??? ??? ??? ?$("#file2").val(data.list);
?? ??? ??? ??? ?layer.msg("附件已添加",{icon:1,time:2000});
?? ??? ??? ?}
?? ??? ?}
?? ?});
}3、Java后臺數(shù)據(jù)處理代碼:
?/**
?? ? * 上傳文件
?? ? * @param file
?? ? * @param model
?? ? * @param request
?? ? * @return
?? ? */
?? ?@RequestMapping(value="/fujian_file")
? ? @ResponseBody
? ? public Map<String, Object> uploadToUser(@RequestParam("file") MultipartFile file, Model model,HttpServletRequest request) {
?? ??? ?
?? ??? ?String fileName = file.getOriginalFilename();
?? ??? ?if (fileName.indexOf("\\") != -1) {
?? ??? ? ? ?fileName = fileName.substring(fileName.lastIndexOf("\\"));
?? ??? ?}
?? ??? ?
?? ??? ?//String filePath = request.getContextPath()+ File.separator+"WebRoot"+ File.separator+"updatefile"+ File.separator;
?? ??? ?// 獲取項(xiàng)目名稱,文件上傳位置
?? ??? ?String filePath = ?request.getSession().getServletContext().getRealPath("/static/updatefile/files");
?? ??? ?File f = new File(filePath);
?? ??? ?if (!f.exists()) {
?? ??? ? ? ?f.mkdirs();// 不存在路徑則進(jìn)行創(chuàng)建
?? ??? ?}
?? ??? ?FileOutputStream out = null;
?? ??? ?try {
?? ??? ? ? ?// 重新自定義文件的名稱
?? ??? ? ? ?Date date = new Date();
?? ??? ? ? ?SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
?? ??? ? ? ?String d = sdf.format(date);// 時(shí)間
?? ??? ? ? ?//拼接文件路徑和文件名
?? ??? ? ? ?filePath = filePath +File.separator+ d + fileName;
?? ??? ? ? ?out = new FileOutputStream(filePath);
?? ??? ? ? ?out.write(file.getBytes());
?? ??? ? ? ?out.flush();//清空緩沖區(qū)的數(shù)據(jù)流
?? ??? ? ? ?out.close();//關(guān)閉流
?? ??? ??? ?} catch (Exception e) {
?? ??? ??? ??? ?//System.out.println(e); //打印拋出的異常
?? ??? ??? ?}
?? ??? ?Map<String,Object> map = new HashMap<String,Object>();
?? ??? ?map.put("list",filePath );
?? ??? ?return map; // 返回文件地址
?? ?}以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
idea的easyCode的 MybatisPlus模板的配置詳解
這篇文章主要介紹了idea的easyCode的 MybatisPlus模板的配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
詳解springboot中各個(gè)版本的redis配置問題
這篇文章主要介紹了詳解springboot中各個(gè)版本的redis配置問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
springboot實(shí)現(xiàn)攔截器之驗(yàn)證登錄示例
本篇文章主要介紹了springboot實(shí)現(xiàn)攔截器之驗(yàn)證登錄示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
基于java實(shí)現(xiàn)具有時(shí)效性文件鏈接
這篇文章主要為大家詳細(xì)介紹了如何基于java實(shí)現(xiàn)具有時(shí)效性的文件鏈接,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下2023-12-12
java?集合工具類Collections及Comparable和Comparator排序詳解
這篇文章主要介紹了java集合工具類Collections及Comparable和Comparator排序詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06
去掉IntelliJ IDEA 中 mybatis 對應(yīng)的 xml 文件警告的教程圖解
本文通過圖文并茂的形式給大家介紹了去掉IntelliJ IDEA 中 mybatis 對應(yīng)的 xml 文件警告的教程,需要的朋友可以參考下2018-06-06
使用nacos命名空間namespace用法,測試時(shí)做實(shí)例隔離
Nacos命名空間用于管理多套不同環(huán)境的服務(wù)器,增加一個(gè)命名空間的概念,可以用一套Nacos注冊中心管理多套不同的環(huán)境2024-12-12
java實(shí)現(xiàn)多人聊天工具(socket+多線程)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)多人聊天工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

