2009-08-14 2 views
5

FCKeditor에 ASP.NET 바이너리를 사용하고 동일한 페이지에 두 개의 편집기를 삽입해야합니다. 업로드 된 이미지/브라우징은 두 개의 다른 디렉토리로 이동해야합니다. 코드 숨김에서이 ​​작업을 어떻게 수행합니까?FCKeditor에서 이미지 업로드 경로 *를 동적으로 변경하려면 어떻게합니까?

업로드 된 파일의 경로가 UserFilesPath 설정으로 config.ascx- 파일에 설정되어 있지만이 값을 내 aspx.cs 파일에서 무시할 수있는 방법을 찾을 수 없습니다.

또한 (Session["FCKeditor:UserFilesPath"]이 설정 될 수 있음을 알리는) 설명서가 발견되었지만 usercontrol 관련 정보를 전역 세션 변수에 넣는 것이 좋지 않습니다.

답변

1

당신은 다음 [인 FCKEditor의 루트 폴더]로 이동 세션 [ "사용자 정보"]

에 사용자 식별 정보를 할당 /filemanager/connector/aspx/config.ascx 필요

string Userfolder = Session["UserInfo"].ToString(); // URL path to user files. UserFilesPath = "~/Upload/" + Userfolder;

0

오 사랑은 많은 투쟁 후 내가 얻을 수있어 유일한 방법은 다음과 같습니다

fckEditor1.Config

속성입니다. 구성하려는 에디터를 설정하십시오 :

fckEditor1.Config [ "UserFilesPath"] = "경로"이것은 아마 작동합니다

+0

나를 도와 주셔서 감사합니다. 그러나 이것은 작동하지 않습니다. config-property는 편집기 filebrowser가 아닌 실제 편집기 전용입니다. – Espo

0

합니다. 적어도 그것은 나를 위해 일했습니다. 죄송합니다

Session["FCKeditor:UserFilesPath"] = "~/images/"; 
0

, 나는 당신의 최선의 컨트롤을 사용을 중지하고 대신 자바 스크립트 API를 사용하는 것입니다 생각합니다. 첫째

0

전체 제목 : FCK 편집기 2.x : FCKeditor를 사용하여 서로 다른 응용 프로그램의 다른 폴더에 파일/이미지/비디오 업로드. 안전한 방법으로 $ Config [ 'UserFilesPath']를 완전히 동적으로 만듭니다.

여러 가지 방법으로 수행 할 수 있습니다. 나는 PHP 응용 프로그램의 코드 구조에 따라 적용한 프로세스를 설명하고 있습니다. 내 응용 프로그램마다 동일한 코드 구조/프레임 워크를 사용했으며 각 응용 프로그램은 내 서버의 하위 폴더로 사용했습니다. 따라서 하나의 FCKeditor를 사용하여 모든 방식으로 올바르게 구성 할 수 있도록 논리적으로 필요합니다. FCKeditor의 내용 부분은 괜찮습니다. 단일 FCKeditor 구성 요소로 다른 응용 프로그램이나 프로젝트에서 쉽게 재사용 할 수 있습니다. 그러나 이미지, 비디오 또는 다른 문서와 같은 파일 업로드시 문제가 발생합니다. 다른 프로젝트에 적용하려면 파일을 다른 프로젝트의 개별 폴더에 업로드해야합니다. 그리고 $ Config [ 'UserFilesPath']는 동적 폴더 경로로 구성되어야하며 각 프로젝트마다 다른 폴더 경로를 의미하지만 동일한 위치에서 동일한 FCKeditor 구성 요소를 호출해야합니다. 나는 약간의 differnt 과정을 단계적으로 설명하고있다. FCKeditor 버전 2.5.1 및 VersionBuild 17566으로 저에게 잘 맞 췄고 다른 사람들에게도 잘되기를 바랍니다. 다른 개발 업체에서 작동하지 않는다면, 프로젝트 코드 구조 및 폴더 쓰기 권한 및 FCKeditor 버전에 따라 프로세스에서 약간의 조정이 필요할 수 있습니다.

1) fckeditor \ editor \ filemanager \ connectors \ phpconfig에 있습니다.PHP 파일

a) 글로벌 $ 구성; $ Config [ 'Enabled'] = false; 세션 따라 안전한 방법을 원하는 경우 I)가, : 단 하나의 사이트 설정을 :

if(!isset($_SESSION)){ 
session_start(); 
} 

if(isset($_SESSION['SESSION_SERVER_RELATIVEPATH']) && $_SESSION['SESSION_SERVER_RELATIVEPATH']!="") { 
$relative_path=$_SESSION['SESSION_SERVER_RELATIVEPATH']; 
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php"); 
} 

NB : 각 하나 개의 프로젝트 도메인 또는 하위 도메인에 대해 하나의 FCKEDITOR을 즉, 하나도 FCKEDITOR 여러 프로젝트에 다음 코드를 삽입 : $ _SESSION [ 'SESSION_SERVER_RELATIVEPATH'] : 웹 루트에 해당하는 프로젝트의 상대 폴더 경로. "/ project/folder/path /"와 같아야하며 세션이 시작된 프로젝트의 공통 파일에이 세션 변수를 설정해야합니다. 그리고 프로젝트의 설정 파일로 settings/configuration.php가 있어야합니다. 이름이나 경로가 다르면 여기에서 해당 경로를 configurations/configuration.php 대신 입력해야합니다.

ii) 다른 하위 폴더로 표시되고 세션 종속적 인 다른 프로젝트에 대해 단일 FCKeditor 구성 요소를 사용하려는 경우 보안 방식 (서로 다른 프로젝트에 대해 서로 다른 session_name을 사용하여 단일 서버에서 세션을 구분할 수 있음) 그러나 프로젝트가 하위 도메인 또는 다른 도메인으로 표시되고 세션 독립적 방법 (iii)을 사용해야하는 경우에는 작동하지 않습니다 (안전하지는 않지만). 다음 코드를 입력하십시오 :

if(!isset($_SESSION)){ 
session_name($_REQUEST['param_project_to_fck']); 
session_start(); 
} 

if(isset($_SESSION['SESSION_SERVER_RELATIVEPATH']) && $_SESSION['SESSION_SERVER_RELATIVEPATH']!="") { 
$relative_path=$_SESSION['SESSION_SERVER_RELATIVEPATH']; 
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php"); 
} 

N.B. (예 : 점 (i)의 끝 부분)

iii) 서로 다른 하위 폴더와 하위 도메인 또는 도메인을 나타내는 여러 프로젝트에 대해 단일 FCKeditor 구성 요소를 사용하려는 경우 (완전히 안전하지는 않지만). 다음 코드를 입력하십시오 :

if(isset($_REQUEST['param_project_to_fck']) && $_REQUEST['param_project_to_fck']!=""){ //base64 encoded relative folder path of the project corresponding to the webroot; should be like "/project/folder/path/" before encoding 
$relative_path=base64_decode($_REQUEST['param_project_to_fck']); 
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php"); 
} 

N.B. 포인트의 끝 이제 당신이 선택한 어떤 경우에 그 이후 (내가)

B)에서,이 코드를 발견하십시오

// Path to user files relative to the document root. 
$Config['UserFilesPath'] = '/userfiles/' ; 

를 다음 코드 교체 : 여기에 $

if(isset($SERVER_RELATIVEPATH) && $SERVER_RELATIVEPATH==$relative_path) { //to make it relatively secure so that hackers can not create any upload folder automatcally in the server, using a direct link and can not upload files there 
$Config['Enabled'] = true ; 
$file_upload_relative_path=$SERVER_RELATIVEPATH; 
}else{ 
$Config['Enabled'] = false ; 
exit(); 
} 
// Path to user files relative to the document root. 
//$Config['UserFilesPath'] = '/userfiles/' ; 
//$Config['UserFilesPath'] = $file_upload_relative_path.'userfiles/' ; 
$Config['UserFilesPath'] = '/userfiles'.$file_upload_relative_path; 

을 SERVER_RELATIVEPATH는 상대 경로이며 이전에 포함 된 프로젝트의 구성 파일에서 설정해야합니다.

$ file_upload_relative_path 변수를 사용하여 다른 동적 폴더 경로와 함께 $ Config [ 'UserFilesPath']를 설정할 수 있습니다. 내 Bluehost Linux 서버에서 프로젝트 루트 폴더 (0755 권한) userfiles 폴더 및 userfiles 아래의 하위 폴더 (FCKeditor 코딩에 따라 0777 여야 함)가 있으므로 해당 폴더에 파일을 업로드 할 수 없습니다. 당신이있는 경우,

$Config['UserFilesPath'] = '/userfiles'.$file_upload_relative_path; 

그러나 : 그래서, (프로젝트 루트 폴더 이상) 서버의 웹 루트에 폴더 userfiles을 생성하고, 여기에 0777에 권한을 설정, 같은 $의 구성 설정에 대한 코드를 사용 귀하의 경우 프로젝트의 하위 폴더에 쓰기 권한 문제는, 당신은 (이전 코드 세그먼트에서 주석) 이전 라인을 사용할 수 있습니다 : 그것은 당신이 비만

$Config['UserFilesPath'] = $file_upload_relative_path.'userfiles/' ; 

마음은 '[기존 $ 구성을 주석 없습니다 UserFilesPath '] ='/ userfiles/'; 이 파일에서 파일의 다른 위치에 존재하는 경우 파일을 바꾸거나 단순히 주석 처리합니다.

2) 1) (a) (ii) 또는 (iii) 방법을 선택한 경우
(a) fckeditor \ editor \ filemanager \ browser \ default \ browser.html 파일을 엽니 다.

이 줄을 검색하십시오. var sConnUrl = GetUrlParam ('Connector'); 그 선 후

넣고 다음 명령 : 이제

var param_project_to_fck = GetUrlParam('param_project_to_fck') ; 

,이 라인에 대한 검색 sUrl + = '& CurrentFolder ='+에 encodeURIComponent (this.CurrentFolder를);

은 줄 끝에서이 명령을 넣어 :

sUrl += '&param_project_to_fck=' + param_project_to_fck ; 

(b)는 이제 오픈 ckeditor의 \ 편집기 \의 파일 관리자 \ 브라우저 \ 기본 \의 frmupload.html 파일을. 이 라인에 대한

검색 (그것은 SetCurrentFolder() 함수에 있어야합니다) :

sUrl += '&param_project_to_fck='+window.parent.param_project_to_fck; 

3) 당신이 보여주고 싶은 자 :

sUrl += '&CurrentFolder=' + encodeURIComponent(folderPath) ; 

은 줄 끝에서이 명령을 넣어 프로젝트에서 FCKeditor를 사용하려면 먼저 해당 줄을 해당 PHP 파일/페이지에 넣어야합니다.

a) 이제 1) (a) (ii) 또는 (iii) 메소드를 선택한 경우 해당 행 앞에 다음 코드 세그먼트를 배치하십시오. $ oFCKeditor-> Create(); 당신이 하나를 선택한 경우

$oFCKeditor->Config["LinkBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Connector=../../connectors/php/connector.php&param_project_to_fck=".base64_encode($SERVER_RELATIVEPATH); 
$oFCKeditor->Config["ImageBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/php/connector.php&param_project_to_fck=".base64_encode($SERVER_RELATIVEPATH); 
$oFCKeditor->Config["FlashBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Type=Flash&Connector=../../connectors/php/connector.php&param_project_to_fck=".base64_encode($SERVER_RELATIVEPATH); 

B))의 (a) (ii)에 방법, 다음 위의 코드 코드 세그먼트에서, 단지 모든 텍스트 대체이 하나 base64_encode ($의 SERVER_RELATIVEPATH) : (base64_encode (session_name를))

그리고 끝났습니다.