Tryag File Manager
Home
||
Turbo Force
||
B-F Config_Cpanel
Current Path :
/
home
/
nonga.eemo.co.kr
/
public_html
/
www
/
Or
Select Your Path :
Upload File :
New :
File
Dir
/home/nonga.eemo.co.kr/public_html/www/chat_room_comin_new.php
<? session_cache_limiter('no-cache, must-revalidate'); session_start(); header("Pragma: no-cache"); header("Cache-Control: no-cache,must-revalidate"); header("Content-Type: text/html; charset=utf-8"); include_once("dbconn.php"); include_once("lib.php"); foreach($_GET as $key => $value) { ${$key}=mysql_real_escape_string(trim($value)); } foreach($_POST as $key => $value) { ${$key}=mysql_real_escape_string(trim($value)); } $rs_my=RS("select * from member where no='{$_COOKIE[umem_no]}' "); if($rs_my[mtype]==1 || $rs_my[mtype]==2) { $rs_farm=RS("select * from farm where no='{$rs_my[farm_no]}' "); $farm_code=$rs_farm[farm_code]; } $rs_farm=RS("select * from farm where farm_code='$farm_code' "); $farm_no=$rs_farm[no]; $arr_room=array(); // API 회원등록 $token="nongadid2013"; //api 로부터 부여받은 접근 토큰키값 $arr = array(); $arr['token']=$token; //생성할 아이디 $arr['user_id']=$rs_my[id]; //생성할 아이디 $arr['user_nick']=$rs_my[name]; //생성할 닉네임 $arr['user_img']="http://brtalk.eemo.co.kr/assets/chat_noticon.png"; //생성할 닉네임 $json_enc=json_encode($arr); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://bitbus.eemo.co.kr/bridge/api_adduser.php'); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: application/x-www-form-urlencoded")); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS,$json_enc); curl_setopt($ch, CURLOPT_TIMEOUT, 30); // TimeOut 값 $response = curl_exec($ch); //echo $response; $json_dec=json_decode($response); curl_close($ch); // "response" : "wrong_token" , "rst" : "잘못된 토큰입니다." // "response" : "1" , "rst" : "success", "mqtt_id" : "adcd", "mqtt_pass" : "12312312" $mqtt_id=$json_dec->mqtt_id; //--API 회원정보 $arr = array(); $arr['token']=$token; $arr['room_no']=$room_no; $json_enc=json_encode($arr); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://bitbus.eemo.co.kr/bridge/api_room_info.php'); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: application/x-www-form-urlencoded")); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS,$json_enc); curl_setopt($ch, CURLOPT_TIMEOUT, 30); // TimeOut 값 $response = curl_exec($ch); //echo $response; $json_dec=json_decode($response); curl_close($ch); //"response":"1","rst":"success","room_no":"2","room_name":"달려라 지오아이디","room_limit":"5","room_pass":"1234","user_id":"sjlee@zoit.co.kr" $arr = array(); $arr['token']=$token; $arr['room_no']=$room_no; $arr['mqtt_id']=$mqtt_id; $json_enc=json_encode($arr); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://bitbus.eemo.co.kr/bridge/api_room_chat_log.php'); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: application/x-www-form-urlencoded")); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS,$json_enc); curl_setopt($ch, CURLOPT_TIMEOUT, 30); // TimeOut 값 $response = curl_exec($ch); //echo $response; $json_dec2=json_decode($response); curl_close($ch); ?> <!DOCTYPE html> <html lang="en" class="default-style layout-navbar-fixed layout-fixed-offcanvas"> <head> <title><?=$_TITLE?></title> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="IE=edge,chrome=1"> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> <link rel="icon" type="image/x-icon" href="favicon.ico"> <link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,500,500i,700,700i,900" rel="stylesheet"> <!-- Icon fonts --> <link rel="stylesheet" href="assets/vendor/fonts/fontawesome.css"> <link rel="stylesheet" href="assets/vendor/fonts/ionicons.css"> <link rel="stylesheet" href="assets/vendor/fonts/linearicons.css"> <link rel="stylesheet" href="assets/vendor/fonts/open-iconic.css"> <link rel="stylesheet" href="assets/vendor/fonts/pe-icon-7-stroke.css"> <!-- Core stylesheets --> <link rel="stylesheet" href="assets/vendor/css/rtl/bootstrap.css" class="theme-settings-bootstrap-css"> <link rel="stylesheet" href="assets/vendor/css/rtl/appwork.css" class="theme-settings-appwork-css"> <link rel="stylesheet" href="assets/vendor/css/rtl/theme-corporate.css" class="theme-settings-theme-css"> <link rel="stylesheet" href="assets/vendor/css/rtl/colors.css" class="theme-settings-colors-css"> <link rel="stylesheet" href="assets/vendor/css/rtl/uikit.css"> <link rel="stylesheet" href="assets/css/demo.css"> <script src="assets/vendor/js/material-ripple.js"></script> <script src="assets/vendor/js/layout-helpers.js"></script> <!-- Core scripts --> <script src="assets/vendor/js/pace.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <!-- Libs --> <link rel="stylesheet" href="assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.css"> <link rel="stylesheet" href="assets/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.css"> <link rel="stylesheet" href="assets/vendor/css/pages/chat.css"> <script src="mqttws31.js" type="text/javascript"></script> </head> <body> <div class="page-loader"> <div class="bg-primary"></div> </div> <!-- Layout wrapper --> <div class="layout-wrapper layout-2"> <div class="layout-inner"> <!-- Layout sidenav --> <?include_once("inc_sidenav.php");?> <!-- / Layout sidenav --> <!-- Layout container --> <div class="layout-container"> <!-- Layout navbar --> <?include_once("inc_navbar.php");?> <!-- / Layout navbar --> <!-- Layout content --> <div class="layout-content"> <!-- Content --> <div class="container-fluid d-flex align-items-stretch flex-grow-1 p-0"> <!-- `.chat-wrapper` fills all available space of container --> <div class="chat-wrapper container-p-x container-p-y"> <!-- Make card full height of `.chat-wrapper` --> <div class="card flex-grow-1 position-relative overflow-hidden"> <!-- Make row full height of `.card` --> <div class="row no-gutters h-100"> <div class="chat-sidebox col"> <!-- Chat contacts header --> <div class="flex-grow-0 px-4"> <div class="media align-items-center"> <div class="media-body"> <input type="text" class="form-control chat-search my-3" placeholder="Search..."> </div> <a href="javascript:void(0)" class="chat-sidebox-toggler d-lg-none d-block text-muted text-large font-weight-light pl-3">×</a> </div> <hr class="border-light m-0"> </div> <!-- / Chat contacts header --> <!-- Wrap `.chat-scroll` to properly position scroll area. Remove this wtapper if you don't need scroll --> <div class="flex-grow-1 position-relative"> <div class="chat-contacts list-group chat-scroll py-3" id='dv_connlist'> </div><!-- / .chat-contacts --> </div> </div> <div class="d-flex col flex-column"> <!-- Chat header --> <div class="flex-grow-0 py-3 pr-4 pl-lg-4"> <div class="media align-items-center"> <a href="javascript:void(0)" class="chat-sidebox-toggler d-lg-none d-block text-muted text-large px-4 mr-2"><i class="ion ion-md-more"></i></a> <div class="position-relative"> <img src="http://brtalk.eemo.co.kr/assets/chat_noticon.png" class="ui-w-40 rounded-circle" alt=""> </div> <div class="media-body pl-3"> <strong><?=$rs_my[name]?></strong> <div class="text-muted small"><em><?=$rs_farm[farm_name]?></em></div> </div> <div> <button type="button" class="btn btn-primary btn-round icon-btn mr-1" onclick="location.href='chat_room.php'"><i class="far fa-share-square"></i></button> <button type="button" class="btn btn-default btn-round icon-btn" id='sp_memsu'></button> </div> </div> </div> <hr class="flex-grow-0 border-light m-0"> <!-- / Chat header --> <!-- Wrap `.chat-scroll` to properly position scroll area. Remove this wtapper if you don't need scroll --> <div class="flex-grow-1 position-relative"> <!-- Remove `.chat-scroll` and add `.flex-grow-1` if you don't need scroll --> <div class="chat-messages chat-scroll p-4" id='dv_chat'> <? foreach($json_dec2->logs as $bk => $bv) { if($bv->vv_mode=='send' && $bv->vv2_mode=='msg') { ?> <div class="chat-message-right mb-4"> <div> <img src="assets/img/avatars/1-small.png" class="ui-w-40 rounded-circle" alt> <div class="text-muted small text-nowrap mt-2"><?=date('H:i:s',strtotime($bv->rdate))?></div> </div> <div class="flex-shrink-1 bg-lighter rounded py-2 px-3 mr-3"> <div class="font-weight-semibold mb-1"><b>나</b></div> <?=$bv->message?> </div> </div> <? } else if($bv->vv_mode=='rcv' && $bv->vv2_mode=='msg') { ?> <div class="chat-message-left mb-4"> <div> <img src="assets/img/avatars/4-small.png" class="ui-w-40 rounded-circle" alt> <div class="text-muted small text-nowrap mt-2"><?=date('H:i:s',strtotime($bv->rdate))?></div> </div> <div class="flex-shrink-1 bg-lighter rounded py-2 px-3 ml-3"> <div class="font-weight-semibold mb-1"><b><?=$bv->from_user_nick?></b></div> <?=$bv->message?> </div> </div> <? } } ?> </div><!-- / .chat-messages --> </div> <!-- Chat footer --> <hr class="border-light m-0"> <div class="flex-grow-0 py-3 px-4"> <div class="input-group"> <input type="text" class="form-control" placeholder="Type your message" id="pub_message" onkeyup="fn_message()"> <div class="input-group-append"> <button type="button" class="btn btn-primary" onclick="fn_send()">Send</button> </div> </div> </div> <!-- / Chat footer --> </div> </div><!-- / .row --> </div><!-- / .card --> </div><!-- / .chat-wrapper --> </div> <!-- / Content --> <!-- Layout footer --> <?include_once("inc_footer.php");?> <!-- / Layout footer --> </div> <!-- Layout content --> </div> <!-- / Layout container --> </div> <!-- Overlay --> <div class="layout-overlay layout-sidenav-toggle"></div> </div> <!-- / Layout wrapper --> <!-- Core scripts --> <script src="assets/vendor/libs/popper/popper.js"></script> <script src="assets/vendor/js/bootstrap.js"></script> <script src="assets/vendor/js/sidenav.js"></script> <!-- Libs --> <script src="assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.js"></script> <!-- Demo --> <script src="assets/js/demo.js"></script> <script src="assets/vendor/libs/bootbox/bootbox.js"></script> <script src="assets/js/pages_chat.js"></script> </body> </html> <script type="text/javascript"> $("#pub_message").on('keyup', function (e) { if (e.keyCode == 13) { // Do something fn_send(); } }); var arr_chatmem=new Array(); var sel_mem = { }; function fn_selmem(topic,nick) { $('#pub_message').val("#"+nick+" "); sel_mem.topic=topic; } function fn_message() { if($('#pub_message').val()=='') { sel_mem.topic=''; } else if($('#pub_message').val().substr(0,1)=='#') { var is_is=false; for (var k in arr_chatmem) { //alert(arr_chatmem[k].nick); if($('#pub_message').val().startsWith('#'+arr_chatmem[k].nick)) { sel_mem.topic=arr_chatmem[k].topic; //alert(sel_mem.topic); is_is=true; } } if(is_is==false) { sel_mem.topic=''; } } console.log(sel_mem.topic); } var mqtt; var reconnectTimeout = 2000; var host = 'bitbus.eemo.co.kr'; // hostname or IP address var port = 9001; var topic = '<?=$token?>/<?=$json_dec->room_no?>/<?=$mqtt_id?>'; // topic to subscribe to var useTLS = false; var username = '<?=$json_dec->room_mqtt_id?>'; var password = '<?=$json_dec->room_mqtt_pw?>'; var cleansession = true; var vv_send_msg=''; var vv_send_idx=0; function MQTTconnect() { if (typeof path == "undefined") { path = '/mqtt'; } mqtt = new Paho.MQTT.Client( host, port, path, "web_" + parseInt(Math.random() * 100, 10) ); var options = { timeout: 3, useSSL: useTLS, cleanSession: cleansession, onSuccess: onConnect, onFailure: function (message) { $('#status').val("Connection failed: " + message.errorMessage + "Retrying"); setTimeout(MQTTconnect, reconnectTimeout); } }; mqtt.onConnectionLost = onConnectionLost; mqtt.onMessageArrived = onMessageArrived; if (username != null) { options.userName = username; options.password = password; } console.log("Host="+ host + ", port=" + port + ", path=" + path + " TLS = " + useTLS + " username=" + username + " password=" + password); mqtt.connect(options); } function onConnect() { mqtt.subscribe(topic, {qos: 0}); $('#chat_list').append('<div class="media p-l-5"><div class="media-body"><small class="text-muted">' + ShowUTCDate() + '<a class="t-overflow" href="">접속되었습니다.</a></div></div>'); var json_data = { }; json_data.from = '<?=$token?>/<?=$json_dec->room_no?>/<?=$mqtt_id?>'; json_data.to = 'all'; json_data.room_no = '<?=$json_dec->room_no?>'; json_data.mode = 'chat_conn'; var send_data = JSON.stringify(json_data); message = new Paho.MQTT.Message(send_data); message.destinationName = "pub/<?=$token?>/<?=$json_dec->room_no?>"; mqtt.send(message); setInterval(function(){ var json_data = { }; json_data.from = '<?=$token?>/<?=$json_dec->room_no?>/<?=$mqtt_id?>'; json_data.from_nick = '<?=$rs_my[name]?>'; json_data.from_id = '<?=$rs_my[id]?>'; json_data.from_img = 'http://brtalk.eemo.co.kr/assets/chat_noticon.png'; json_data.to = 'all'; json_data.room_no = '<?=$json_dec->room_no?>'; json_data.mode = 'chat_conn'; var send_data = JSON.stringify(json_data); message = new Paho.MQTT.Message(send_data); message.destinationName = "pub/<?=$token?>/<?=$json_dec->room_no?>"; mqtt.send(message); }, 2000); } function onConnectionLost(response) { setTimeout(MQTTconnect, reconnectTimeout); //$('#status').val("connection lost: " + responseObject.errorMessage + ". Reconnecting"); $('#chat_list').append('<div class="media p-l-5"><div class="media-body"><small class="text-muted">' + ShowUTCDate() + '<a class="t-overflow" href="">'+responseObject.errorMessage+'</a></div></div>'); }; function onMessageArrived(message) { var topic = message.destinationName; var payload = message.payloadString; //$('#ws').prepend('<li>' + topic + ' = ' + payload + '</li>'); //alert(payload.type); //alert(payload); console.log(payload); var obj = JSON.parse(payload); if(obj.type=='connect_su') { $('#sp_memsu').text(obj.connsu); $("#dv_connlist").empty(); var vv=''; obj.connlist.forEach((val, index) => { //alert(val.nick); if(val.nick) { //$('#dv_connlist').append("<li id='li_"+val.topic+"' style='color:#000'><a onclick=\"fn_selmem('"+val.topic+"' , '"+val.nick+"')\">"+val.nick+"</a></li>"); vv+= '<a href="javascript:void(0)" class="list-group-item list-group-item-action online">'+ '<img src="'+val.img+'" class="d-block ui-w-40 rounded-circle" alt="">'+ '<div class="media-body ml-3">'+ val.nick+ '<div class="chat-status small"><span class="badge badge-dot"></span> Online</div>'+ '</div>'+ '</a>'; //alert(vv); } }); //alert(vv); $("#dv_connlist").html(vv); } else if(obj.type=='connect_list') { obj.connlist.forEach((val, index) => { //alert(val.tel); if(val.isconn=='1') { $('#'+val.tel).text('접속'); } else { $('#'+val.tel).text(''); } }); } else if(obj.type=='receive_msg') { var str= '<div class="chat-message-left mb-4">'+ '<div>'+ '<img src="'+decodeURI(obj.from_user_img)+'" class="ui-w-40 rounded-circle" alt>'+ '<div class="text-muted small text-nowrap mt-2">'+obj.datetime+'</div>'+ '</div>'+ '<div class="flex-shrink-1 bg-lighter rounded py-2 px-3 ml-3">'+ '<div class="font-weight-semibold mb-1"><b>'+decodeURI(obj.from_user_nick)+'</b></div>'+ decodeURI(obj.message)+ '</div>'+ '</div>'; $('#dv_chat').append(str); $('#dv_chat').scrollTop($('#dv_chat')[0].scrollHeight); } else if(obj.type=='send_response') { if(obj.idx==vv_send_idx) { /* $('#chat_list').append('<div class="media p-l-5"><div class="media-body"><small class="text-muted">Send : ' + ShowUTCDate() + '<a class="t-overflow" href="">'+vv_send_msg+'</a></div></div>'); $('#pub_message').val(""); $('#chat_list').scrollTop($('#chat_list')[0].scrollHeight); $('#pub_message').focus(); */ var str=''+ '<div class="chat-message-right mb-4">'+ '<div>'+ '<img src="assets/img/avatars/1-small.png" class="ui-w-40 rounded-circle" alt>'+ '<div class="text-muted small text-nowrap mt-2">'+obj.datetime+'</div>'+ '</div>'+ '<div class="flex-shrink-1 bg-lighter rounded py-2 px-3 mr-3">'+ '<div class="font-weight-semibold mb-1"><b>나</b></div>'+ vv_send_msg+ '</div>'+ '</div>'; $('#dv_chat').append(str); $('#pub_message').val(""); $('#dv_chat').scrollTop($('#dv_chat')[0].scrollHeight); $('#pub_message').blur(); } } else if(obj.type=='receive_files') { var str='<div class="widget-chat-item with-media left" style="margin-right:100px">'+ '<div class="widget-chat-media">'+ '<img alt="" src="'+decodeURI(obj.from_user_img)+'" />'+ '</div>'+ '<div class="widget-chat-info">'+ '<div class="widget-chat-info-container">'+ '<div class="widget-chat-name text-black-darker" style="margin-bottom:5px">'+decodeURI(obj.from_user_nick)+'</div>'+ '<div class="widget-chat-message">'; obj.files.forEach((val2, index) => { if(val2.type=='image') { str+='<div class="alert alert-warning fade show" style="padding:0;background:transparent">'+ '<div class="row" style="margin:0px 0px 10px 0px">'+ '<img alt="" src="'+decodeURI(val2.link_url)+'" onclick="location.href=\''+val2.down_url+'\'" download class="widget-card-cover width-full height-full" style="margin:0" />'+ '</div>'+ '</div>'; } else { str+=''+ '<div class="alert alert-warning fade show">'+ '<a href="'+val2.down_url+'" style="color:#ffff00" download >'+decodeURI(val2.org_name)+'</a><br>'+ '유효기간 : ~ '+val2.limit_date+'<br>'+ '용량 : '+val2.file_size+'<br>'+ '<a href="'+val2.down_url+'" class="btn btn-primary btn-xs" download >다운받기</a>'+ '</div>'; } }); str+='</div>'+ '<div class="widget-chat-time">'+obj.datetime+'</div>'+ '</div>'+ '</div>'+ '</div>'; $('#dv_chat').append(str); setTimeout(function(){ $('#dv_chat').scrollTop($('#dv_chat')[0].scrollHeight); }, 300); } else if(obj.type=='send_response_files') { if(obj.idx==vv_send_idx) { var str='<div class="widget-chat-item with-media right" style="margin-left:100px;margin-right:-55px">'+ '<div class="widget-chat-info">'+ '<div class="widget-chat-info-container">'+ '<div class="widget-chat-name text-black-darker" style="margin-bottom:5px"><?=$rs_mem[nick]?></div>'+ '<div class="widget-chat-message">'; obj.files.forEach((val2, index) => { if(val2.type=='image') { str+='<div class="alert alert-warning fade show" style="padding:0;background:transparent">'+ '<div class="row" style="margin:0px 0px 10px 0px">'+ '<img alt="" src="'+decodeURI(val2.link_url)+'" onclick="location.href=\''+val2.down_url+'\'" download class="widget-card-cover width-full height-full" style="margin:0" />'+ '</div>'+ '</div>'; } else { str+=''+ '<div class="alert alert-warning fade show">'+ '<a href="'+val2.down_url+'" style="color:#ffff00" download >'+decodeURI(val2.org_name)+'</a><br>'+ '유효기간 : ~ '+val2.limit_date+'<br>'+ '용량 : '+val2.file_size+'<br>'+ '<a href="'+val2.down_url+'" class="btn btn-primary btn-xs" download>다운받기</a>'+ '</div>'; } }); str+='</div>'+ '<div class="widget-chat-time">'+obj.datetime+'</div>'+ '</div>'+ '</div>'+ '</div>'; $('#dv_chat').append(str); setTimeout(function(){ $('#dv_chat').scrollTop($('#dv_chat')[0].scrollHeight); }, 300); } } }; $(document).ready(function() { MQTTconnect(); }); function fn_send() { var is_is=false; for (var k in arr_chatmem) { if($('#pub_message').val().startsWith('#'+arr_chatmem[k].nick)) { sel_mem.topic=arr_chatmem[k].topic; is_is=true; } } if(is_is==false) { sel_mem.topic=''; } var to_msq=$('#pub_message').val(); if(to_msq=='') { //alert('Insert Topic Or Message !! '); return; } vv_send_idx++; var json_data = { }; json_data.from = '<?=$token?>/<?=$json_dec->room_no?>/<?=$mqtt_id?>'; json_data.from_id = '<?=$rs_my[id]?>'; json_data.from_img = 'http://brtalk.eemo.co.kr/assets/chat_noticon.png'; if(sel_mem.topic) { json_data.to = 'm2m'; json_data.to_topic = sel_mem.topic; } else { json_data.to = 'all'; } json_data.data = to_msq; json_data.mode = 'chat_send'; json_data.room_no = '<?=$json_dec->room_no?>'; json_data.idx = vv_send_idx; var send_data = JSON.stringify(json_data); message = new Paho.MQTT.Message(send_data); message.destinationName = "pub/<?=$token?>/<?=$json_dec->room_no?>"; mqtt.send(message); vv_send_msg=to_msq; /* $('#chat_list').append('<div class="media p-l-5"><div class="media-body"><small class="text-muted">Send : ' + ShowUTCDate() + '<a class="t-overflow" href="">'+to_msq+'</a></div><div class="media-body"><div class="clearfix"></div><div class="attrs">Date Created: 09/06/1988</div><div class="block attrs">Members: 78954</div><div class="block attrs">Published: No</div></div></div>'); $('#pub_message').val(""); $('#chat_list').scrollTop($('#chat_list')[0].scrollHeight); $('#pub_message').focus(); */ } function ShowUTCDate() { var dNow = new Date(); var now = new Date(dNow.getTime() + dNow.getTimezoneOffset() * 60000) var utcdate= now.getFullYear() + "-" + (now.getMonth()+1) + "-" + now.getDate() + " " + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds() + ""; return utcdate; } function fn_filesend() { var formdata = new FormData(); formdata.append("token", '<?=$token?>'); formdata.append("room_no", '<?=$json_dec->room_no?>'); formdata.append("mqtt_id", '<?=$mqtt_id?>'); $($("#multiFile")[0].files).each(function(index, file) { formdata.append("multi_file[]", file); //alert(index); }); var is_is=false; for (var k in arr_chatmem) { if($('#pub_message').val().startsWith('#'+arr_chatmem[k].nick)) { sel_mem.topic=arr_chatmem[k].topic; is_is=true; } } if(is_is==false) { sel_mem.topic=''; } if (formdata) { jQuery.ajax({ xhr: function() { var xhr = new window.XMLHttpRequest(); xhr.upload.addEventListener("progress", function(evt) { if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; percentComplete = parseInt(percentComplete * 100); //var $link = $('.'+ids); //var $img = $link.find('i'); //$link.html('Uploading..('+percentComplete+'%)'); //$link.append($img); $('#dv_progress').css('width',percentComplete+'%'); $('#dv_progress').html(percentComplete+'%'); } }, false); return xhr; }, url: "https://bitbus.eemo.co.kr/bridge/api_chat_upload.php", type: "POST", data: formdata, processData: false, contentType: false, success: function (res) { //var json = jQuery.parseJSON(res); var json = eval("(" + res + ")"); var obj = JSON.parse(res); var arr_file_no=new Array(); var str_file_no=''; if(json.rst=='1') { //$.MessageBox("파일 전송 성공"); obj.files_no.forEach((val, index) => { //$.MessageBox(val); arr_file_no.push(val); }); var str_file_no=arr_file_no.join(","); vv_send_idx++; var json_data = { }; json_data.from = '<?=$token?>/<?=$json_dec->room_no?>/<?=$mqtt_id?>'; json_data.from_id = '<?=$rs_my[id]?>'; json_data.from_img = 'http://brtalk.eemo.co.kr/assets/chat_noticon.png'; if(sel_mem.topic) { json_data.to = 'm2m'; json_data.to_topic = sel_mem.topic; } else { json_data.to = 'all'; } json_data.data = ''; json_data.mode = 'chat_files'; json_data.room_no = '<?=$json_dec->room_no?>'; json_data.idx = vv_send_idx; json_data.files = str_file_no; var send_data = JSON.stringify(json_data); message = new Paho.MQTT.Message(send_data); message.destinationName = "pub/<?=$token?>/<?=$json_dec->room_no?>"; mqtt.send(message); //$.MessageBox("파일 전송 완료"); $.MessageBox({ buttonDone : "확인", message : "파일 전송 완료" }).done(function(){ $('#dv_progress').css('width','0%'); $('#dv_progress').html('0%'); }).fail(function(){ }); } else { $.MessageBox("<b>파일 전송실패</b><br>알지못하는 오류발생"); } $('#multiFile').val(""); } }); } } function getExtensionOfFilename(filename) { var _fileLen = filename.length; /** * lastIndexOf('.') * 뒤에서부터 '.'의 위치를 찾기위한 함수 * 검색 문자의 위치를 반환한다. * 파일 이름에 '.'이 포함되는 경우가 있기 때문에 lastIndexOf() 사용 */ var _lastDot = filename.lastIndexOf('.'); // 확장자 명만 추출한 후 소문자로 변경 var _fileExt = filename.substring(_lastDot, _fileLen).toLowerCase(); return _fileExt; } setTimeout(function(){ $('#dv_chat').scrollTop($('#dv_chat')[0].scrollHeight); }, 500); </script>