JAVA 上傳圖片功能


                前后端實現上傳圖片功能(JAVA代碼)

1.前端大概

請求頭必須為AJAX請求頭: 'X-Requested-With': 'XMLHttpRequest'

一般是指網頁中存在的Content-Type,用於定義網絡文件的類型和網頁的編碼,決定文件接收方將以什么形式:
                                                  application/x-www-form-urlencoded:數據被編碼為名稱/值對。這是標准的編碼格式。
                                                  multipart/form-data: 數據被編碼為一條消息,頁上的每個控件對應消息中的一個部分。

 

2.設置請求頭格式

Vue.prototype.$sendFormData = axios.create({
  baseURL: baseUrl,
  timeout: 60000,
  headers: {
    'X-Requested-With': 'XMLHttpRequest',
    'Content-Type': 'multipart/form-data'
  },
})

3.AJAX請求代碼:

submitUpload() {
            // this.$refs.upload.submit();
             if(this.imageFileName.length>5){
                this.$message('圖片不能超過5張');
                return false
           }
            let data  = {};  
            let files = this.imageFileName;  
            console.log(files)
            let param = new FormData(); //創建form對象  
            if(files!=''){  
                files.forEach((n,i)=>{
                    console.log(n)
                    n['isFormField']=true;
                    param.append('broadcastName',n.raw)
                    // param.append('isFormField',true)
                })
                param.append('strusercode',this.pubFuc.user.strusercode)
                ; //單個圖片 ,多個用循環 append 添加   
                console.log(param)
            }else{  
                this.$message.error("圖片不對");  
                return false
            }   
            this.$sendFormData.post('broadcast/uploadPicture',param)
            .then(data=>{
                if(data.data.result==1000){
                    this.imageFileName=[];
                }else{
                    this.$message({
                        type:"error",
                        message:data.data.msg
                    })
                }
            })
      },
 

4.JAVA后台代碼(比較長:原因是一個方法,為方便大家看)

    @GET
    @POST
    @Path("/uploadPicture")
    @Produces("application/json;charset=UTF-8")
    @Consumes("multipart/form-data")
    public String uploadPicture(@Context HttpServletRequest request, @Context HttpServletResponse response){
        JSONObject resultJson = new JSONObject();
        String imgName=null;//給圖片定義名稱
        String imgPath = null;//給圖片指定的上傳路徑
        String strusercode=null;
        List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
        try{
            //創建服務器路徑存儲圖片
            imgPath=THESERVERURL+"broadcast\\";
            //創建文件夾
            File file = new File(imgPath);
            if (!file.exists()){// 創建文件夾
                file.mkdirs();
            }else{
                //刪除文件中的所有圖片
                String name[]=file.list();
                for (int i=0; i<name.length; i++){  
                    File f=new File(imgPath,name[i]);//此時就可得到文件夾中的文件  
                    f.delete();//刪除文件  
                }  
            }
            DiskFileItemFactory factory = new DiskFileItemFactory(); // 設置工廠
            factory.setRepository(new File(imgPath)); // 設置文件存儲位置
            factory.setSizeThreshold(1024 * 1024); // 設置大小,如果文件小於設置大小的話,放入內存中,如果大於的話則放入磁盤中,單位是byte
            ServletFileUpload upload = new ServletFileUpload(factory);
            upload.setHeaderEncoding("utf-8"); // 這里就是中文文件名處理的代碼,其實只有一行
            List<FileItem> listform = upload.parseRequest(request);
            if (listform != null && !listform.isEmpty()){
                int sort=0;
                for (FileItem fileItem : listform){
                    sort++;
                    Map<String,Object> map =new HashMap<String,Object>();
                    // 判斷表單數據是否為普通字段 不是則為圖片字段
                    if (fileItem.isFormField()){
                        String fieldName = fileItem.getFieldName();// 獲取表單字段名稱
                        String value = fileItem.getString("utf-8");// 獲取表單字段值
                        strusercode=value;//獲取用戶編碼
                    }else{
                        // 上傳圖片的保存
                        String value = fileItem.getName();//值
                        //String fieldName = fileItem.getFieldName();// 獲取表單字段名稱
                        if(value!=null && !"".equals(value)){
                            // 保存的圖片名稱  currentTimeMillis時間搓
                            imgName = System.currentTimeMillis()+ fileItem.getName().substring(fileItem.getName().lastIndexOf("."));
                            // 保存(寫)
                            fileItem.write(new File(imgPath, imgName));
                            map.put("broadcastUrl", "broadcast/" + imgName);//圖片路徑
                            map.put("booleans", "1");//是否顯示圖片
                            map.put("sort", sort);//圖片路徑
                            map.put("dtnoticetime", PublicTools.gettime());//上傳時間
                            list.add(map);
                        }
                    }
                }
                //刪除表里面的圖片記錄
                userDaoImpl.delete("delete from t_broadcast");
                //往表里插入數據
                userDaoImpl.insertinto(BroadcastSql.insertSql(list, strusercode));
            }else{
                return this.returnError(resultJson,ResMessage.Server_Abnormal.code,request);
            }
        } catch (Exception e){
            logger.info("登錄信息異常",e);
            return this.returnError(resultJson,ResMessage.Server_Abnormal.code,request);
        }
        return this.response(resultJson, request);
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM