사진 올리기 - 앞부분

29639 단어 웹 프런트엔드
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 페이지에 aaxfileupload를 도입해야 합니다.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('
'" id="'
+ 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;
}
});

좋은 웹페이지 즐겨찾기