html部分:
<div id="head_img">
<a class="file" onclick="imgFileClick()">
<img id="head_imgurl" src="">
<span class="change_img_font">span>
a>
<input type="file" name="cover" id="change_img" onChange="changeImgFileUp(url1,url2)" style="visibility: hidden;">
<input type="hidden" id="cpath_1"/>
<a id="upload_btn" href="javascript: saveHeadImg();" role="button">确认上传a>
div>
css部分:
#head_img{
height: 190px;
width: 157px;
}
#head_img .file {
width: 100%;
height: 157px;
position: relative;
display: inline-block;
border-radius: 100%;
padding: 0;
overflow: hidden;
text-decoration: none;
line-height: 157px;
cursor: pointer;
text-align: center;
font-size: 20px;
}
#head_img .file img{
width: 100%;
height: 100%;
color: #fff;
}
#head_img .change_img_font{
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
color: #fff;
display: inline-block;
text-shadow: 1px 1px 0 rgba(221,68,73,0.8),-1px -1px 0 rgba(221,68,73,0.8);
border: 1px solid #fff;
}
#head_img .change_img_font:hover{
border-color: rgba(221,68,73,0.5);
}
#head_img .change_img_font:hover:after{
content: "更换头像";
}
#head_img input {
position: absolute;
font-size: 100px;
right: 0;
top: 0;
opacity: 0;
}
#change_img{
visibility: hidden;
}
#upload_btn, #cancel_btn{
border: 1px solid #ccc;
color: #848484;
padding: 5px 10px;
border-radius: 5px;
display: none;
margin-top: 3px;
}
js部分
<script>function imgFileClick(){$("#change_img").click();}script>
js部分上传图的方法
/*
* 上传图片
* fname是后台参数
* url1:图片上传的java方法路劲
* url2:图片文件读取的java方法路劲
*/
function changeImgFileUp(url1,url2) {
$.ajaxFileUpload({
url:path+url1,
dataType: 'json',
fileElementId: 'change_img',//input[type=file]的id
secureuri:false,
success:function(data, status){
if(data!=null){
var fname = data.fname;
$("#head_imgurl").attr("src", url2+"?fname="+fname);
$("#cpath_1").val(data.path+data.fname);
$("#upload_btn").css("display","inline-block");
}
},
error: function (data, status, e) {
alert(e);
}
});
}
/*
* 保存图片(保存到数据库中)
* id、path、time_stamp、sig 后台的一些参数
*/
function saveHeadImg(url){
var realcode = getCookie("member");//获取会员id,向后台传的参数
var cpath1 = $("#cpath_1").val();
$.ajax({
url:path+url,
type: "get",
data:{'id':realcode,'path':cpath1,'time_stamp':getTimestamp(),'sig':getSig('portraitModification')},//{'后台的参数':前端向后台传的参数,根据项目方法不同而不同}
dataType: 'jsonp',
jsonp : "callback",
cache: false,
success:function(d){
alert("上传成功~");
$("#upload_btn").css("display","none");
},
error: function(e){
alert(e);
}
});
}
在html页面要引入ajaxfileupload.js文件
// JavaScript Document
jQuery.extend({
createUploadIframe: function(id, uri)
{
//create frame
var frameId = 'jUploadFrame' + id;
if(window.ActiveXObject) {
if(jQuery.browser.version=="9.0") {
io = document.createElement('iframe');
io.id = frameId;
io.name = frameId;
} else if(jQuery.browser.version=="6.0"||jQuery.browser.version=="7.0"||jQuery.browser.version=="8.0") {
var io = document.createElement(' + frameId + '" />');
if(typeof uri== 'boolean'){
io.src = 'javascript:false';
}
else if(typeof uri== 'string'){
io.src = uri;
}
}
}
else {
var io = document.createElement('iframe');
io.id = frameId;
io.name = frameId;
}
io.style.position = 'absolute';
io.style.top = '-1000px';
io.style.left = '-1000px';
document.body.appendChild(io);
return io;
},
createUploadForm: function(id, fileElementId)
{
//create form
var formId = 'jUploadForm' + id;
var fileId = 'jUploadFile' + id;
var form = jQuery(' + formId + '" enctype="multipart/form-data">');
var oldElement = jQuery('#' + fileElementId);
var newElement = jQuery(oldElement).clone();
jQuery(oldElement).attr('id', fileId);
jQuery(oldElement).before(newElement);
jQuery(oldElement).appendTo(form);
//set attributes
jQuery(form).css('position', 'absolute');
jQuery(form).css('top', '-1200px');
jQuery(form).css('left', '-1200px');
jQuery(form).appendTo('body');
return form;
},
ajaxFileUpload: function(s) {
// TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
s = jQuery.extend({}, jQuery.ajaxSettings, s);
var id = s.fileElementId;
var form = jQuery.createUploadForm(id, s.fileElementId);
var io = jQuery.createUploadIframe(id, s.secureuri);
var frameId = 'jUploadFrame' + id;
var formId = 'jUploadForm' + id;
if( s.global && ! jQuery.active++ )
{
// Watch for a new set of requests
jQuery.event.trigger( "ajaxStart" );
}
var requestDone = false;
// Create the request object
var xml = {};
if( s.global )
{
jQuery.event.trigger("ajaxSend", [xml, s]);
}
var uploadCallback = function(isTimeout)
{
// Wait for a response to come back
var io = document.getElementById(frameId);
try
{
if(io.contentWindow)
{
xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;
xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;
}else if(io.contentDocument)
{
xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;
xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;
}
}catch(e)
{
jQuery.handleError(s, xml, null, e);
}
if( xml || isTimeout == "timeout")
{
requestDone = true;
var status;
try {
status = isTimeout != "timeout" ? "success" : "error";
// Make sure that the request was successful or notmodified
if( status != "error" )
{
// process the data (runs the xml through httpData regardless of callback)
var data = jQuery.uploadHttpData( xml, s.dataType );
if( s.success )
{
// ifa local callback was specified, fire it and pass it the data
s.success( data, status );
};
if( s.global )
{
// Fire the global callback
jQuery.event.trigger( "ajaxSuccess", [xml, s] );
};
} else
{
jQuery.handleError(s, xml, status);
}
} catch(e)
{
status = "error";
jQuery.handleError(s, xml, status, e);
};
if( s.global )
{
// The request was completed
jQuery.event.trigger( "ajaxComplete", [xml, s] );
};
// Handle the global AJAX counter
if(s.global && ! --jQuery.active)
{
jQuery.event.trigger("ajaxStop");
};
if(s.complete)
{
s.complete(xml, status);
} ;
jQuery(io).unbind();
setTimeout(function()
{ try
{
jQuery(io).remove();
jQuery(form).remove();
} catch(e)
{
jQuery.handleError(s, xml, null, e);
}
}, 100);
xml = null;
};
}
// Timeout checker
if( s.timeout > 0 )
{
setTimeout(function(){
if( !requestDone )
{
// Check to see ifthe request is still happening
uploadCallback( "timeout" );
}
}, s.timeout);
}
try
{
var form = jQuery('#' + formId);
jQuery(form).attr('action', s.url);
jQuery(form).attr('method', 'POST');
jQuery(form).attr('target', frameId);
if(form.encoding)
{
form.encoding = 'multipart/form-data';
}
else
{
form.enctype = 'multipart/form-data';
}
jQuery(form).submit();
} catch(e)
{
jQuery.handleError(s, xml, null, e);
}
if(window.attachEvent){
document.getElementById(frameId).attachEvent('onload', uploadCallback);
}
else{
document.getElementById(frameId).addEventListener('load', uploadCallback, false);
}
return {abort: function () {}};
},
uploadHttpData: function( r, type ) {
var data = !type;
data = type == "xml" || data ? r.responseXML : r.responseText;
// ifthe type is "script", eval it in global context
if( type == "script" )
{
jQuery.globalEval( data );
}
// Get the JavaScript object, ifJSON is used.
if( type == "json" )
{
if(data.indexOf(''
) != -1) {
data = data.substring(5, data.length-6);
}
eval( "data = " + data );
}
// evaluate scripts within html
if( type == "html" )
{
jQuery("").html(data).evalScripts();
}
return data;
}
});