css上传头像代码,JS上传头像代码示例

JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

var oInput = document.getElementById("input");

oInput.addEventListener("change", uploadImg);

function uploadImg(e) {

let $target = e.target || e.srcElement;

let file = $target.files[0];

if (!/image\/\w+/.test(file.type)) {

alert("image only please.");

return false;

}

var reader = new FileReader();

reader.readAsDataURL(file);

reader.onload = function(e) {

var img = new Image,

width = 640, //image resize

canvas = document.createElement("canvas"),

drawer = canvas.getContext("2d");

img.src = this.result;

img.onload = function() {

canvas.width = width;

canvas.height = width * (img.height / img.width);

drawer.drawImage(img, 0, 0, canvas.width, canvas.height);

temp_avatar = canvas.toDataURL("image/jpeg"); //上传的头像文件 包含data URL 的DOMString。

console.log(temp_avatar);

var temp_file = dataURLtoFile(temp_avatar, 'avatar.png'); //data RUL转成file进行判断大小

var size = temp_file.size;

if (size > 5 * 1024 * 1024) {

setTimeout(function() {

console.log("图片过大");

}, 1000);

return;

}

console.log("OK"); //此处可以进行文件上传操作

}

}

}

function dataURLtoFile(dataurl, filename) {

var arr = dataurl.split(','); //data:image/jpeg;base64 /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCA........

var mime = arr[0].match(/:(.*?);/)[1]; //image/jpeg

var bstr = atob(arr[1]); //解码为ASCII

var n = bstr.length;

var u8arr = new Uint8Array(n);

while (n--) {

u8arr[n] = bstr.charCodeAt(n); //获取指定位置的uniCode码

}

return new File([u8arr], filename, {

type: mime

});

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现头像更换功能需要用到HTML、CSS、JavaScript和后端语言,下面是一个简单的示例: 1. HTML部分 ```html <div class="avatar"> <img src="default-avatar.png" alt="avatar"> <input type="file" id="avatar-input" accept="image/*" onchange="changeAvatar(event)"> </div> ``` 这里定义了一个包含头像图片和上传文件输入框的`div`元素。`img`标签用于显示当前头像,`input`标签用于上传头像。`accept="image/*"`表示只允许上传图片类型的文件。 2. CSS部分 ```css .avatar { position: relative; display: inline-block; } .avatar img { width: 100px; height: 100px; border-radius: 50%; } .avatar input { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; } ``` 这里使用CSS样式设置头像的样式,包括大小、圆角等。`input`标签的样式被设置为不可见,但是它覆盖了整个`div`元素,这样点击头像时就会触发`input`的点击事件。 3. JavaScript部分 ```javascript function changeAvatar(event) { var file = event.target.files[0]; if (file.type.indexOf('image/') !== 0) { alert('请选择图片文件!'); return; } if (file.size > 1024 * 1024) { alert('图片文件大小不能超过1MB!'); return; } var reader = new FileReader(); reader.onload = function(event) { var img = new Image(); img.src = event.target.result; img.onload = function() { if (img.width !== img.height || img.width < 100 || img.height < 100) { alert('图片尺寸必须大于等于100x100像素!'); return; } document.querySelector('.avatar img').src = img.src; }; }; reader.readAsDataURL(file); } ``` 这里使用JavaScript实现头像更换的逻辑。`changeAvatar`函数是上传文件输入框的`onchange`事件处理函数。首先检查上传的文件是否为图片类型和文件大小是否符合要求,如果不符合则弹出提示框并返回。然后通过`FileReader`对象读取上传的文件,并将其转换为`dataURL`格式的字符串。接着创建一个新的`Image`对象用于显示上传的图片,检查图片是否符合尺寸要求,如果不符合则弹出提示框并返回。最后将`img`对象的`src`属性设置为`dataURL`字符串,即可在页面上显示新的头像。 4. 后端语言部分 头像上传需要将文件保存到服务器上,这需要使用后端语言来实现。具体实现方式因语言而异,这里以PHP为例: ```php <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $file = $_FILES['avatar']; if ($file['error'] !== UPLOAD_ERR_OK) { echo '上传失败!'; return; } if (strpos($file['type'], 'image/') !== 0) { echo '请选择图片文件!'; return; } if ($file['size'] > 1024 * 1024) { echo '图片文件大小不能超过1MB!'; return; } $name = uniqid() . '.jpg'; $path = __DIR__ . '/avatars/' . $name; if (!move_uploaded_file($file['tmp_name'], $path)) { echo '保存文件失败!'; return; } echo '头像上传成功!'; } ?> ``` 这里使用PHP实现了一个上传文件的接口。首先检查上传的文件是否为图片类型和文件大小是否符合要求,如果不符合则返回错误信息。然后生成一个唯一的文件名,并将文件保存到服务器上。最后返回上传成功的消息。 以上是一个简单的头像更换实现示例,可以根据需求进行修改和拓展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值