<div>
  In this example, you can't upload your own files.<br />
  Uploads are disabled for security reasons. 
  <br /><br /><br />
  <div class="image-preview-multiple">
    <input
      type="hidden"
      role="uploadcare-uploader"
      data-clearable
      data-images-only
      data-multiple
      data-public-key="8b178a5b708a4aa049f7"
      value="cd334b26-c641-4393-bcce-b5041546430d~11"
    />
    <div class="_list"></div>
  </div>
</div>
body {
  margin: 16px;
}

p {
  margin: 8px 0;
}

code {
  font-family: monospace;
}

.image-preview-multiple ._list {
  padding-top: 20px;
}
.image-preview-multiple ._item {
  padding: 0 0 10px;
  display: inline-block;
  text-align: center;
  vertical-align: top;
  width: 100px;
  word-break: break-word;
  font-size: 12px;
  line-height: normal;
}
.image-preview-multiple ._item img {
  display: block;
  width: 80px;
  height: 80px;
  padding: 0 10px 6px;
}
function installWidgetPreviewMultiple(widget, list) {
  widget.onChange(function(fileGroup) {
    list.empty()
    if (fileGroup) {
      $.when.apply(null, fileGroup.files()).done(function() {
        $.each(arguments, function(i, fileInfo) {
          var src = fileInfo.cdnUrl + '-/scale_crop/160x160/center/'

          list.append($('<div/>', {class: '_item'}).append([$('<img/>', {src: src}), fileInfo.name]))
        })
      })
    }
  })
}
$(function() {
  $('.image-preview-multiple').each(function() {
    installWidgetPreviewMultiple(uploadcare.MultipleWidget($(this).children('input')), $(this).children('._list'))
  })
})

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js
  2. https://ucarecdn.com/libs/widget/3.x/uploadcare.min.js