Js实现input上传图片并显示缩略图

function previewFile() {
  var preview = document.querySelector('img');
  var file    = document.querySelector('input[type=file]').files[0];
  var reader  = new FileReader();

  reader.onloadend = function () {
    preview.src = reader.result;
  }

  if (file) {
    reader.readAsDataURL(file);
  } else {
    preview.src = "";
  }
}
<input type="file" onchange="previewFile()"><br>
<img src="" height="200" alt="Image preview...">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,生成缩略图并上传需要以下几个步骤: 1. 使用 JavaScript 生成缩略图,可以使用第三方库如`canvas`或`FileReader`来实现。 2. 将生成的缩略图转换为`Blob`对象。 3. 使用`FormData`对象将`Blob`对象上传到服务器,可以使用XMLHttpRequest或fetch进行上传。 下面是一个简单的示例代码: ```javascript // 生成缩略图 function createThumbnail(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = function() { const image = new Image(); image.src = reader.result; image.onload = function() { const canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d'); canvas.width = 100; canvas.height = 100; ctx.drawImage(image, 0, 0, 100, 100); canvas.toBlob(resolve, 'image/jpeg', 0.9); }; }; reader.readAsDataURL(file); }); } // 上传缩略图 function uploadThumbnail(blob) { const formData = new FormData(); formData.append('thumbnail', blob, 'thumbnail.jpg'); fetch('/upload', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error)); } // 处理文件上传事件 function handleFileUpload(event) { const file = event.target.files[0]; createThumbnail(file) .then(uploadThumbnail) .catch(error => console.error(error)); } // 监听文件上传事件 const fileInput = document.querySelector('#file-input'); fileInput.addEventListener('change', handleFileUpload); ``` 在这个示例中,`createThumbnail`函数使用`FileReader`读取文件并将其转换为`Image`对象,然后使用`canvas`生成100x100的缩略图,并将缩略图转换为`Blob`对象。`uploadThumbnail`函数使用`FormData`对象将缩略图上传到服务器,上传过程使用了`fetch`进行异步处理。最后,`handleFileUpload`函数监听文件上传事件,调用`createThumbnail`和`uploadThumbnail`函数生成缩略图并上传。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值