jquery.fileupload 使用

1、頁面部分
引入的樣式、js

jquery.fileupload.css
jquery-1.8.2.min.js
jquery.ui.widget.js
jquery.fileupload.js

頁面

<div class="btn btn-primary btn-sm fileinput-button" id="hide-button">
  <i class="glyphicon glyphicon-plus"></i>
  <span>上傳</span>
  <input id="imageFile" type="file" name="imageFile">
</div>

綁定事件

$('#' + fileId).fileupload({
    url: '/upload/image?type=' + type,
    add: function (e, data) {
          var uploadErrors = [];
          var acceptFileTypes = /^image\/(png|jpe?g)$/i;
          //文件類型判斷
          if (!acceptFileTypes.test(data.originalFiles[0]['type'])) {
             return false;
          }
         //文件大小判斷
          if (data.originalFiles[0]['size'] > 5000 * 1024) {
               return false;
          }
          if (uploadErrors.length > 0) {
                    return false;
                } else {
                    data.submit();
                }
          },
          done: function (e, data) {
                ......
          }
 });

2、java部分

@RestController
@RequestMapping("/file")
public class FileController {
    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Value("${app.file.upload.server.origin}")
    private String origin;
    @Value("${app.file.upload.server.path}")
    private String realPath;
    @Value("${app.file.upload.dir.userPicture}")
    private String userPicturePath;
    @Value("${app.file.upload.size.max.image}")
    private int imageFileMaxSize;

    @PostMapping("/upload/image")
    public Result uploadImage(@RequestParam MultipartFile imageFile) {
        validateImageFile(imageFile);
        String dateDIR = DateFormatUtils.format(new Date(), "yyyyMMdd");
        String path = userPicturePath + dateDIR + "/";
        // 為上傳的文件進(jìn)行重命名(避免同名文件的相互覆蓋)使用UUID + 文件后綴
        String suffix = imageFile.getOriginalFilename().substring(imageFile.getOriginalFilename().lastIndexOf("."));
        String fileName = UUID.randomUUID().toString() + suffix;
        File file = new File(realPath + path + fileName);
        if (!file.getParentFile().exists()) {
            file.mkdirs();
        }
        //將臨時(shí)文件保存到磁盤
        try {
            imageFile.transferTo(file);
        } catch (IOException e) {
            logger.error("文件上傳失敗", e);
            throw new ServiceException("上傳失?。? + e.getMessage());
        }
        Map<Object, Object> data = Maps.newLinkedHashMap();
        data.put("url", origin + path + fileName);
        return ResultGenerator.genSuccessResult(data);
    }

    private void validateImageFile(MultipartFile imageFile) throws ServiceException {
        //校驗(yàn)類型
        if (imageFile.getContentType().indexOf("image") == -1) {
            throw new ServiceException("上傳失敗,僅支持圖片類型!");
        }
        if (imageFile.getSize() > (imageFileMaxSize * 1024 * 1024)) {
            throw new ServiceException("上傳失敗,文件大小不能超過" + imageFileMaxSize + "MB!");
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • 我們是流浪的船舶 家是溫暖的港灣 無論走到哪兒 總有一絲牽掛 千縈萬繞連到我們身上 也許未來的路還很長 或許充滿了...
    荒野里的鬼閱讀 278評(píng)論 0 6
  • 后來我活的利索隨性瀟灑 卻始終學(xué)不會(huì)像你這樣說走就走 你是我枯水年紀(jì)里的一場雨 你來的酣暢淋漓 我淋的一病不起 當(dāng)...
    故夢j閱讀 514評(píng)論 4 8

友情鏈接更多精彩內(nèi)容