聯系官方銷售客服
1835022288
028-61286886
因為程序不支持遠程圖片水印,想通過oss的圖片處理給圖片加水印,開啟了原圖保護后上傳圖片的時候很多地方無法顯示圖片,只有通過改代碼實現了。為了上傳圖片后及時顯示圖片,需要在圖片結尾加一個oss的圖片處理!300,
在下面文件中修改
diy\dayrui\libraries\Field\Image.php
修改了下面代碼增加了.'!300' 圖片上傳后不顯示圖片,查看源代碼圖片后面沒有接!300,但是保存文章后會顯示圖片,并且圖片后面接了!300。
$info = array(); if ($value && is_array($value)) { foreach ($value as $i => $id) { $info[$i]['id'] = $id; $info[$i]['file'] = dr_get_file($id).'!300'; } }
下面是文件的源代碼
<?php class F_Image extends A_Field { /** * 構造函數 */ public function __construct() { parent::__construct(); $this->name = '圖片上傳'; // 字段名稱 $this->fieldtype = array('TEXT' => '', 'VARCHAR' => '255'); // TRUE表全部可用字段類型,自定義格式為 array('可用字段類型名稱' => '默認長度', ... ) $this->defaulttype = 'VARCHAR'; // 當用戶沒有選擇字段類型時的缺省值 } /** * 字段相關屬性參數 * * @paramarray$value值 * @return string */ public function option($option) { $option['count'] = isset($option['count']) ? $option['count'] : 2; $option['width'] = isset($option['width']) ? $option['width'] : '80%'; $option['fieldtype'] = isset($option['fieldtype']) ? $option['fieldtype'] : ''; $option['uploadpath'] = isset($option['uploadpath']) ? $option['uploadpath'] : ''; $option['fieldlength'] = isset($option['fieldlength']) ? $option['fieldlength'] : ''; return ' <div class="form-group"> <label class="col-md-2 control-label">'.fc_lang('寬度').':</label> <div class="col-md-9"> <label><input type="text" class="form-control" size="10" name="data[setting][option][width]" value="'.$option['width'].'"></label> <span class="help-block">'.fc_lang('[整數]表示固定寬帶;[整數%]表示百分比').'</span> </div> </div> <div class="form-group"> <label class="col-md-2 control-label">'.fc_lang('文件大小').':</label> <div class="col-md-9"> <label><input type="text" class="form-control" value="'.$option['size'].'" name="data[setting][option][size]"></label> <span class="help-block">'.fc_lang('單位MB').'</span> </div> </div> <div class="form-group"> <label class="col-md-2 control-label">'.fc_lang('上傳數量').':</label> <div class="col-md-9"> <label><input type="text" class="form-control" value="'.$option['count'].'" name="data[setting][option][count]"></label> <span class="help-block">'.fc_lang('每次最多上傳的文件數量').'</span> </div> </div> <div class="form-group"> <label class="col-md-2 control-label">'.fc_lang('遠程圖片模式').':</label> <div class="col-md-9"> <div class="radio-list"> <label class="radio-inline"><input type="radio" value="2" name="data[setting][option][autodown]" '.($option['autodown'] == 2 ? 'checked' : '').' > '.fc_lang('自動(會影響發布速度)').'</label> <label class="radio-inline"><input type="radio" value="0" name="data[setting][option][autodown]" '.($option['autodown'] == 0 ? 'checked' : '').' > '.fc_lang('關閉').'</label> </div> </div> </div> <div class="form-group"> <label class="col-md-2 control-label">'.fc_lang('保存目錄').':</label> <div class="col-md-9"> <input type="text" class="form-control" size="50" name="data[setting][option][uploadpath]" value="'.$option['uploadpath'].'"> <span class="help-block">'.fc_lang('目錄中不得包含中文 <br />標簽介紹:站點id{siteid}、模塊目錄{module}、年{y}、月{m}、日zffd5j7hlbj <br />例如:{siteid}/{module}/test/,將附件保存至:uploadfile/站點/模塊目錄/test目錄/附件名稱.擴展名').'</span> </div> </div> '; } /** * 字段輸出 */ public function output($value) { return dr_string2array($value); } /** * 獲取附件id */ public function get_attach_id($value) { return dr_string2array($value); } /** * 字段入庫值 */ public function insert_value($field) { $my = $this->ci->post[$field['fieldname']]; $data = array(); if ($my) { foreach ($my as $id) { if ($id) { // 下載遠程圖片 if (strpos($id, 'http') === 0 && (strpos($id, 'jpg') !== false || strpos($id, 'png') !== false || strpos($id, 'gif') !== false || strpos($id, 'jpeg') !== false) && isset($field['setting']['option']['autodown']) && $field['setting']['option']['autodown']) { // 當前作者 $uid = isset($_POST['data']['uid']) ? (int)$_POST['data']['uid'] : $this->ci->uid; // 附件總大小判斷 if ($uid == $this->ci->uid && ($this->ci->member['adminid'] || $this->ci->member_rule['attachsize'])) { $data = $this->ci->db->select_sum('filesize')->where('uid', $uid)->get('attachment')->row_array(); if ($this->ci->member['adminid'] || $data['filesize'] <= $this->ci->member_rule['attachsize'] * 1024 * 1024) { // 可以下載 $file = dr_catcher_data($id); if (!$file) { log_message('error', 'Image字段下載遠程圖片失敗:獲取遠程數據失敗('.$id.')'); } else { $path = SYS_UPLOAD_PATH.'/'.date('Ym', SYS_TIME).'/'; if (!is_dir($path)) { dr_mkdirs($path); } $fileext = strtolower(trim(substr(strrchr($id, '.'), 1, 10))); //擴展名 $filename = substr(md5(time()), 0, 7).rand(100, 999); if (@file_put_contents($path.$filename.'.'.$fileext, $file)) { $info = array( 'file_ext' => '.'.$fileext, 'full_path' => $path.$filename.'.'.$fileext, 'file_size' => filesize($path.$filename.'.'.$fileext)/1024, 'client_name' => $id, ); $this->ci->load->model('attachment_model'); $result = $this->ci->attachment_model->upload($uid, $info); if (is_array($result)) { $id = $result[0]; } else { @unlink($path.$filename.'.'.$fileext); log_message('error', '編輯器下載遠程圖片失?。?#39;.$result); } } else { log_message('error', '編輯器下載遠程圖片失?。何募懭胧?#39;); } } } else { // 附件總空間不足 $this->ci->member_model->add_notice($uid, 1, fc_lang('附件可用空間不足,無法下載遠程圖片')); } } } $data[] = $id; } } } // 第一張作為縮略圖 if (isset($_POST['data']['thumb']) && !$_POST['data']['thumb'] && isset($data[0]) && $data[0]) { $this->ci->data[1]['thumb'] = $data[0]; } $this->ci->data[$field['ismain']][$field['fieldname']] = dr_array2string($data); } /** * 附件處理 */ public function attach($data, $_data) { $data = dr_string2array($data); $_data = dr_string2array($_data); if (!isset($_data)) { $_data = array(); } if (!isset($data)) { $data = array(); } // 新舊數據都無附件就跳出 if (!$data && !$_data) { return NULL; } // 新舊數據都一樣時表示沒做改變就跳出 if ($data === $_data) { return NULL; } // 當無新數據且有舊數據表示刪除舊附件 if (!$data && $_data) { return array( array(), $_data ); } // 當無舊數據且有新數據表示增加新附件 if ($data && !$_data) { return array( $data, array() ); } // 剩下的情況就是刪除舊文件增加新文件 // 新舊附件的交集,表示固定的 $intersect = @array_intersect($data, $_data); return array( @array_diff($data, $intersect), // 固有的與新文件中的差集表示新增的附件 @array_diff($_data, $intersect), // 固有的與舊文件中的差集表示待刪除的附件 ); } /** * 字段表單輸入 * * @paramstring$cname字段別名 * @paramstring$name字段名稱 * @paramarray$cfg字段配置 * @paramarray$data值 * @return string */ public function input($cname, $name, $cfg, $value = NULL, $id = 0) { // 字段顯示名稱 $text = (isset($cfg['validate']['required']) && $cfg['validate']['required'] == 1 ? '<font color="red">*</font>' : '').''.$cname.':'; // 顯示框寬度設置 $width = isset($cfg['option']['width']) && $cfg['option']['width'] ? $cfg['option']['width'] : '80%'; // 表單附加參數 $attr = isset($cfg['validate']['formattr']) && $cfg['validate']['formattr'] ? $cfg['validate']['formattr'] : ''; // 字段提示信息 $tips = isset($cfg['validate']['tips']) && $cfg['validate']['tips'] ? '<span class="help-block" id="dr_'.$name.'_tips">'.$cfg['validate']['tips'].'</span>' : ''; // 禁止修改 $disabled = !IS_ADMIN && $id && $value && isset($cfg['validate']['isedit']) && $cfg['validate']['isedit'] ? 'disabled' : ''; // 當字段必填時,加入html5驗證標簽 if (isset($cfg['validate']['required']) && $cfg['validate']['required'] == 1) { $attr.= ' required="required"'; } // 上傳的URL $url = '/index.php?s=member&c=api&m=ajax_upload&name='.$name.'&siteid='.SITE_ID.'&code='.str_replace('=', '', dr_authcode($cfg['option']['size'].'|'.$this->get_upload_path($cfg['option']['uploadpath']), 'ENCODE')); // 字段默認值 $file_value = ''; $value && $value = dr_string2array($value); // 默認值輸出 $info = array(); if ($value && is_array($value)) { foreach ($value as $i => $id) { $info[$i]['id'] = $id; $info[$i]['file'] = dr_get_file($id).'!300'; } } $count = max(1, (int)$cfg['option']['count']); // 輸出變量 $str =''; $str.= '<script type="text/javascript" src="'.THEME_PATH.'js/ajax.upload.js"></script>'; $str.= '<script type="text/javascript" src="'.THEME_PATH.'js/jquery-ui.min.js"></script>'; $str.= '<div class="bk10"></div>'; $str.= ' <ul class="cover imgreset" id="dr_upload_'.$name.'">'; for($i=0; $i<$count; $i++) { $str.= '<li class="upload-container" style="width:90px;height:72px;margin-bottom: 10px;">'; $str.= '<div class="upload-trigger '.($info[$i]['id'] ? 'completed" style="display:none' : '').'" id="dr_'.$name.'_upload_'.$i.'"></div>'; $str.= '<div class="upload-preview" style="display:'.($info[$i]['id'] ? 'block' : 'none').';">'; $str.= '<input type="hidden" class="dr_'.$name.'_upload_value_'.$i.'" name="data['.$name.']['.$i.']" id="cover" value="'.$info[$i]['id'].'" />'; $str.= '<div class="pic" style="width:90px; height:71px; overflow:hidden;background-image:none !important"><img src="'.($info[$i]['id'] ? $info[$i]['file'] : 'javascript:void(0);').'" style="height:auto;" /></div>'; $str.= '<a href="javascript:dr_remove_'.$name.'('.$i.')" class="remove" style="display: none;"></a>'; $str.= '<span class="rearrange-text" style="display: none;">拖動排序</span>'; $str.= '</div>'; $str.= '<script type="text/javascript"> function dr_remove_'.$name.'(i) { var cover = $("#dr_'.$name.'_upload_"+i); cover.removeClass("completed"); cover.show(); cover.html(""); $(".dr_'.$name.'_upload_value_"+i).val(""); var preview = cover.next(\'div\'); $(\'img\', preview).attr({src:\'javascript:void(0);\'}); preview.hide(); } $(".upload-container").bind({ mouseenter:function(){ $("a,span", $(this)).show(); }, mouseleave:function(){ $("a,span", $(this)).hide(); } }); // 拖動圖片 $("#dr_upload_'.$name.'").sortable({ revert: true }); $(function () { var $cover_'.$name.' = $("#dr_'.$name.'_upload_'.$i.'"); var $preview_'.$name.' = $cover_'.$name.'.next(\'div\'); var fileType = "pic",fileNum = "one"; var button = $("#dr_'.$name.'_upload_'.$i.'"), interval; new AjaxUpload(button, { action: "'.$url.'", name: "Filedata", onSubmit: function (file, ext) { if(ext && /^(jpg|jpeg|png|gif|webp)$/i.test(ext)){ // 上傳成功 $cover_'.$name.'.html("<img src=\"'.THEME_PATH.'admin/images/loading-mini.gif\">"); }else{ dr_tips("請上傳圖片"); return false; } }, onComplete: function (file, response) { var json = $.parseJSON(response); if(json.code){ $("img", $preview_'.$name.').attr({src:json.url}); $("input", $preview_'.$name.').val(json.id); $cover_'.$name.'.addClass("completed").hide(); $preview_'.$name.'.show(); $(\'div.upload-trigger:not(".completed")\').eq(0).html(\'\').show(); }else{ $(\'img\', $preview_'.$name.').attr({src:\'javascript:void(0);\'}); $(\'input\', $preview_'.$name.').val(\'\'); dr_tips(json.msg); } } }); }); </script>'; $str.= '</li>'; } $str.= '</ul>'; $str.= '<div class="bk10"></div>'; $str.= ''.$tips; // 輸出最終表單顯示 return $this->input_format($name, $text, $str); } }
用DIY字段吧,這樣改影響升級
回復@可接二開、定制、使用解答
DIY字段小白不會用,流汗.gif