。进步{
宽度:9%;
高度:10px;
border:1px 实心#ccc;
边距底部:6px;
边距-left: 85px;
边距-top: -10px;
显示:无;
}
.bgpro {
显示:块;
宽度:9px;
背景:#c0c4cf;
高度:10px;
颜色:#fff;
文本对齐:居中;
字体大小: 8px;
}
/风格
div id='预览'
img id='imghead' class='pic_show' border=0 src='__STATICS_DOMAIN__/public/boss/images/imgbg.png' width='100' height='100' /
/div
输入类型='按钮'值='选择徽标'类='btn'/
input type='file' onchange='previewImage(this)' class='file' name='pic'/
a(请选择100 X 100方形标志以达到最佳显示效果)/a
/div
div 类='进度'span 类='bgpro'/span/div
$('input[name='pic']').on('change',function() {
if(this.files 的类型=='未定义'){
返回;
}
var img=this.files[0];//获取图像信息
var type=img.type;//获取图片类型并判断用途
var url=getObjectURL(this.files[0]);//使用自定义函数获取图片的本地url
var fd=new FormData();//实例化表单并提交数据使用
fd.append('pic',img);//追加img
如果(网址)
$('.pic_show').attr('src',url).show();//显示图片
if(type.substr(0,5) !='image'){//类型过滤无效
alert('不是图片类型,无法上传!');
返回;
}
//启动ajax请求,tp在后台使用
$.ajax({
输入: '帖子',
url : dolphin.image_upload_url,
数据: fd,
processData: false, //告诉jQuery不要处理数据,这个是必须的,否则会报错
contentType: false, //告诉jQuery 不要设置contentType
数据类型: '文本',
xhr : function() {//这个是关键点,获取原始xhr对象,然后绑定upload.onprogress
var xhr=jQuery.ajaxSettings.xhr();
xhr.upload.onprogress=函数(ev) {
//这里开始计算百分比
var parcent=0;
if(ev.lengthComputable) {
百分比=100 * ev.loaded/ev.total;
百分比=parseFloat(百分比).toFixed(2);
$('.progress').show();
$('.bgpro').css('宽度',百分比+ '%').html(百分比+ '%');
}
};
返回xhr;
},
success:函数(数据){
警报(数据)
}
});
});
//自定义图片路径函数
函数getObjectURL(文件) {
var url=null;
if (window.createObjectURL!=undefined) { //基本
url=window.createObjectURL(文件);
} else if (window.URL!=undefined) { //mozilla(firefox)
url=window.URL.createObjectURL(文件);
} else if (window.webkitURL!=undefined) { //webkit 或chrome
url=window.webkitURL.createObjectURL(文件);
}
返回网址;
}
PHP
Array([名称]=cooff[电子邮件]=qq.comaa)Array([文件]=Array([名称]=ynce2.0 test.apk[类型]=application/vnd.android.package-archive[tmp_name]=/tmp/php4Jxt0c[error]=0[size]=6476627)) 图片上传插件
函数预览图像(文件){
控制台日志(4444)
var最大宽度=180;
var最大高度=180;
var div=document.getElementById('预览');
if(file.files file.files[0]) {
div.innerHTML='img id=imghead';
div.innerHTML +='span class='closeimg' onclick='closeimg()'/span';
var img=document.getElementById('imghead');
img.onload=函数() {
控制台日志(5555)
var rect=clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);
img.width=矩形.width;
img.height=矩形.height;
//img.style.marginLeft=rect.left+'px';
img.style.marginTop=rect.top + 'px';
}
var reader=new FileReader();
reader.onload=函数(evt) {
img.src=evt.target.result;
}
reader.readAsDataURL(file.files[0]);
} else //兼容IE
{
var sFilter='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src='';
文件.select();
var src=document.selection.createRange().text;
div.innerHTML='img id=imghead';
var img=document.getElementById('imghead');
img.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src=src;
var rect=clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);
状态=('rect:' + 矩形顶部+ ',' + 矩形.左+ ',' + 矩形宽度+ ',' + 矩形高度);
div.innerHTML='div id=divhead style='width:' + 矩形.width + 'px;height:' + 矩形.height + 'px;margin-top:' + 矩形.top + 'px;' + sFilter + src + '\''/div';
}
}
函数clacImgZoomParam(maxWidth, maxHeight, 宽度, 高度) {
var 参数={
顶部: 0,
左: 0,
宽度:宽度,
身高: 身高
};
if(宽度maxWidth || 高度maxHeight) {
速率宽度=宽度/最大宽度;
速率高度=高度/最大高度;
如果(速率宽度速率高度){
参数.width=maxWidth;
param.height=Math.round(高度/速率宽度);
} 别的{
param.width=Math.round(宽度/rateHeight);
param.height=maxHeight;
}
}
param.left=Math.round((maxWidth - param.width)/2);
param.top=Math.round((maxHeight - param.height)/2);
返回参数;
}
函数closeimg(){
$('#preview').find('img').attr('src','./public/boss/images/imgbg.png');
$('#preview').find('span').remove();
console.log($('#preview').find('input').val());
var file=document.getElementById('fileInput');
if (file.outerHTML) {
文件.outerHTML=文件.outerHTML;
} else { //FF(包括3.5)
文件.值='';
}
}
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/5070.html
用户评论
学习一下如何用JS实现图片上传功能,自己搭建网站确实方便
有19位网友表示赞同!
感觉最近很多服务都要配合前端提交图片文件,要好好研究下这个思路
有17位网友表示赞同!
以前都是依赖后端处理图片上传逻辑,现在想尝试自己用JS实现看看效果
有15位网友表示赞同!
js实现图片上传,是不是要考虑兼容性问题?不同的浏览器可能有差异吧
有19位网友表示赞同!
学习一下如何使用formData对象进行文件传输,这对前端开发者很重要
有16位网友表示赞同!
看了很多教程,感觉关键是选择合适的框架或工具来辅助开发
有5位网友表示赞同!
用js实现图片上传方便快捷,而且可以自定义一些逻辑处理
有18位网友表示赞同!
希望能够学习到精通js上传图片的技巧
有7位网友表示赞同!
想先了解一下js如何获取文件内容和路径
有12位网友表示赞同!
图像上传过程需要考虑安全,例如验证文件类型和大小限制
有12位网友表示赞同!
学习js实现图片上传后,可以提高前端开发效率
有18位网友表示赞同!
multipart/form-data 是一个常用的格式来提交带文件的表单数据,这很重要了解
有15位网友表示赞同!
js实现图片上传的思路理解得不是很透彻,需要多看看代码示例
有20位网友表示赞同!
这个功能需要用到ajax异步请求和 DOM 操作吧
有12位网友表示赞同!
学习到js实现图片上传后,可以更好地理解前端开发原理
有20位网友表示赞同!
想了解一下常用的JS框架或库是如何处理图片上传的
有14位网友表示赞同!