天天看點

使用layui上傳圖檔前後端代碼使用layui上傳圖檔前後端代碼

使用layui上傳圖檔前後端代碼

一、form表單裡的代碼

<div class="layui-form-item">
	    <label class="layui-form-label">公司Logo</label>
	    <div class="layui-input-inline uploadHeadImage">
	        <div class="layui-upload-drag" id="headImg">
	            <i class="layui-icon"></i>
	            <p>點選上傳圖檔,或将圖檔拖拽到此處</p>
	        </div>
	    </div>
	      <!--   隐藏的圖檔路徑 -->
	    <input type="text" name="companyImg" id="companyImg" lay-verify="title" class="layui-input layui-hide">
	          
	    <div class="layui-input-inline">
	        <div class="layui-upload-list">
	            <img class="layui-upload-img headImage"  src="http://t.cn/RCzsdCq" id="demo" style="height:130px;width:130px;">
	            <p id="demoText"></p>
	        </div>
	    </div>
</div>
           

二、js中layui送出的圖檔的代碼

layui.use(['form','laydate',"upload","jquery","layer", "element"], function(){
	var $ = layui.$,
    element = layui.element,
    layer = layui.layer,
    upload = layui.upload,
    form = layui.form,
	laydate = layui.laydate;
	laydate.render({ //建立時間
        elem: '#date'
        });
	//單圖檔上傳(公司logo)
    var uploadInst = upload.render({
        elem: '#headImg'
        , url: '${pageContext.request.contextPath }/upload/headImg'
        , size: 500
        , before: function (obj) {
            //預讀本地檔案示例,不支援ie8
            obj.preview(function (index, file, result) {
                $('#demo').attr('src', result); //圖檔連結(base64)
                var demoText = $('#demoText');
                demoText.html('<span style="color: #8f8f8f;">預覽圖檔!!!</span>');
            });
        }
        , done: function (res) {
            //如果上傳失敗
            if (res.code > 0) {
                return layer.msg('上傳失敗');
            }
            //上傳成功
            //列印背景傳回的位址: 把位址放入一個隐藏的input中, 和表單一起送出到背景, 此處略..
             console.log(res.data.src);
             $("#companyImg").val(res.data.src);
            
            window.parent.uploadHeadImage(res.data.src);
            var demoText = $('#demoText');
            demoText.html('<span style="color: #8f8f8f;">上傳成功!!!</span>');
        }
        , error: function () {
            //示範失敗狀态,并實作重傳
            var demoText = $('#demoText');
            demoText.html('<span style="color: #FF5722;">上傳失敗</span> <a class="layui-btn layui-btn-mini demo-reload" id="headImg">重試</a>');
            demoText.find('.demo-reload').on('click', function () {
                uploadInst.upload();
            });
        }
    });
  });
           

三、資料傳輸到背景代碼為

package com.controller;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.RandomUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;


import com.sun.javafx.collections.MappingChange.Map;
import com.tools.DateUtil;

@Controller
@RequestMapping("/upload")
public class uplond {

	
	/**
	 * 個人資訊上傳
	 * @return {Result}
	 */
	@RequestMapping(value = "/headImg", method = {RequestMethod.POST})
	@ResponseBody
	public Object headImg(@RequestParam(value="file",required=false) MultipartFile attach, HttpServletRequest request, HttpServletResponse response) throws Exception {
		String carPictuerUrl = null;
		//判斷檔案是否為空
		if(!attach.isEmpty()){
			
			  String path1 =
			  request.getSession().getServletContext().getRealPath("/");
			 
			String path = request.getSession().getServletContext().getRealPath("statics/uploadfiles");
					 
			
			System.out.println("path1:==============="+path1);
			
			System.out.println("path======"+path);
			String oldFileName = attach.getOriginalFilename();//原檔案名
			String prefix=FilenameUtils.getExtension(oldFileName);//原檔案字尾
			/**
			 * RandomUtils.nextInt(1, 1000000)
	         * 傳回一個在指定區間内的整數
	         * startInclusive 可以傳回的最小值必須是非負的
	         * endExclusive 上限(不包括)
	         */
			//String fileName = System.currentTimeMillis()+RandomUtils.nextInt(1000000)+"."+prefix;  	
			String fileName = System.currentTimeMillis()+RandomUtils.nextInt(1,1000000)+"."+prefix;
			File targetFile = new File(path, fileName);  //建立檔案
			 if(!targetFile.exists()){  //判斷檔案夾是否存在
                 targetFile.mkdirs();  
             }  
			
				try {
					attach.transferTo(targetFile);
				} catch (IllegalStateException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}
		
			 
				carPictuerUrl = "statics/uploadfiles/"+fileName;
		}
	
	    HashMap<String,Object> map2=new HashMap<String,Object>();
	    HashMap<String,Object> map=new HashMap<String,Object>();
	    map.put("code",0);
	    map.put("msg","");
	    map.put("data",map2);
	    map2.put("src",carPictuerUrl);
	    return map;
	}
	
	
	
}

           

四、感謝你的浏覽通路

工作幾年,略有心得,然很少整理成文,平常工作中浏覽了不少道友的好文章,受益良多。 
  顧也開始寫一些文章, 希望能與各位道友分享進步 !!!!
  如果有用,歡迎各位點贊評論,若有不足,亦可指正!!!