공홈에 등록된 첨부파일을 외부로! 의 사용법이 궁금합니다.
https://xe1.xpressengine.com/index.php?mid=download&package_id=22753684
본문에 첨부된 사용법 링크는 사라졌네요...
설정에는 업로드서버주소, 업로드폴더, 비밀키를 입력받게 되있네요.
업로드 서버에 뭔가를 따로 설정해줘야 비밀키를 통해 접속 할것같습니다.
lua_external_file.addon.php
<?php if(!defined('__XE__')) exit(); if(Context::get("act") == "procFileDownload" && $called_position == "before_module_proc"){ $oFM = getModel("file"); $columnList = array('source_filename', 'uploaded_filename', 'upload_target_srl', 'module_srl'); $file_obj = $oFM->getFile(Context::get("file_srl"), $columnList); if(str_replace("index.php", "", $file_obj->uploaded_filename) != $file_obj->uploaded_filename) return; $ch = curl_init(); $sk = explode("/", $file_obj->uploaded_filename); array_pop($sk); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, array( 'key' => $addon_info->secret, 'dir' => implode("/", $sk), 'file' => '@' . $file_obj->uploaded_filename . ';filename=' . Context::get("file_srl"))); curl_setopt($ch, CURLOPT_URL, "http://" . $addon_info->upload . "/upload.php"); curl_exec($ch); curl_close($ch); $args = new stdClass; $args->file_srl = Context::get("file_srl"); $args->uploaded_filename = "index.php?addon_ext=external_file&file_srl=" . Context::get("file_srl"); $args->module_srl = $file_obj->module_srl; $args->upload_target_srl = $file_obj->upload_target_srl; executeQuery('file.updateFile', $args); @unlink($file_obj->uploaded_filename); } if(Context::get("act") == "procFileOutput" || Context::get("addon_ext") == "external_file"){ $oFM = getModel("file"); $columnList = array('source_filename', 'uploaded_filename', 'upload_target_srl', 'module_srl', 'direct_download'); $file_obj = $oFM->getFile(Context::get("file_srl"), $columnList); $types = "binaries"; if($file_obj->direct_download == "Y") $types = "images"; $url = "http://" . $addon_info->upload . "/" . $addon_info->upload_fol . "/files/attach/" . $types . "/" . $file_obj->module_srl . "/" . $file_obj->upload_target_srl . "/" . Context::get("file_srl"); $buff = FileHandler::getRemoteResource($url, null, 3, 'GET', "image/png"); header("Cache-Control: "); header("Pragma: "); $t = "application/octet-stream"; header("Content-Type: " . $t); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Content-Length: " .sizeof($buff)); header('Content-Disposition: attachment; filename="'.$file_obj->source_filename.'"'); header("Content-Transfer-Encoding: binary\n"); echo $buff; exit(); }
info.xml
<?xml version="1.0" encoding="UTF-8"?> <addon version="0.2"> <title xml:lang="ko">외부 첨부파일 애드온</title> <description xml:lang="ko"> 첨부파일을 외부로 업로드 시키는 애드온입니다. </description> <version>0.0.3</version> <date>2015-06-16</date> <author email_address="[email protected]" link="http://www.luacast.io/"> <name xml:lang="ko">LuaCast</name> </author> <extra_vars> <var name="upload"> <title xml:lang="ko">업로드 서버</title> <description xml:lang="ko">외부 서버의 도메인 주소를 입력해 주세요. ( 예시 - 도메인 )</description> </var> <var name="upload_fol"> <title xml:lang="ko">업로드 폴더</title> <description xml:lang="ko">외부 서버에 업로드 될 폴더 명을 입력해 주세요. ( 예시 - upload )</description> </var> <var name="secret"> <title xml:lang="ko">비밀 키</title> <description xml:lang="ko">외부 서버에 인증을 위한 비밀 키를 입력해 주세요. ( 예시 - HFRmnQ9hTNGZvFQq )</description> </var> </extra_vars> </addon>
https://xe1.xpressengine.com/forum/23063012
작동이 안된다는 댓글이 많은데...