Ciao a tutti,
sto compilando un form di aggiunta di contenuto per un blog, e sono andato sulla scelta dell'editor nicedit, adesso però avrei bisogno di estendere una sua funzionalità, ossia mi da la possibilità di eseguire l upload delle foto che poi automaticamente carica nella textarea, adesso avrei bisogno di intercettare il file immagine che lui carica e passarlo anche all'interno di un altro div.
Il codice che gestisce l'upload della foto è il seguente:
Codice PHP:
<?php
session_start();
/* NicEdit - Micro Inline WYSIWYG
* Copyright 2007-2009 Brian Kirchoff
*
* NicEdit is distributed under the terms of the MIT license
* For more information visit [url]http://nicedit.com/[/url]
* Do not remove this copyright message
*
* nicUpload Reciever Script PHP Edition
* @description: Save images uploaded for a users computer to a directory, and
* return the URL of the image to the client for use in nicEdit
* @author: Brian Kirchoff <briankircho@gmail.com>
* @sponsored by: DotConcepts ([url]http://www.dotconcepts.net[/url])
* @version: 0.9.0
*/
define('NICUPLOAD_PATH', '../fotoUpload'); // Set the path (relative or absolute) to
// the directory to save image files
define('NICUPLOAD_URI', '../fotoUpload'); // Set the URL (relative or absolute) to
// the directory defined above
$nicupload_allowed_extensions = array('jpg','jpeg','png','gif','bmp');
// You should not need to modify below this line
$rfc1867 = function_exists('apc_fetch') && ini_get('apc.rfc1867');
if(!function_exists('json_encode')) {
die('{"error" : "Image upload host does not have the required dependicies (json_encode/decode)"}');
}
$id = $_POST['APC_UPLOAD_PROGRESS'];
if(empty($id)) {
$id = $_GET['id'];
}
if($_SERVER['REQUEST_METHOD']=='POST') { // Upload is complete
if(empty($id) || !is_numeric($id)) {
nicupload_error('Invalid Upload ID');
}
if(!is_dir(NICUPLOAD_PATH) || !is_writable(NICUPLOAD_PATH)) {
nicupload_error('Upload directory '.NICUPLOAD_PATH.' must exist and have write permissions on the server');
}
$file = $_FILES['nicImage'];
$image = $file['tmp_name'];
$max_upload_size = ini_max_upload_size();
if(!$file) {
nicupload_error('Must be less than '.bytes_to_readable($max_upload_size));
}
$ext = strtolower(substr(strrchr($file['name'], '.'), 1));
@$size = getimagesize($image);
if(!$size || !in_array($ext, $nicupload_allowed_extensions)) {
nicupload_error('Invalid image file, must be a valid image less than '.bytes_to_readable($max_upload_size));
}
//============================================//
//Codifica id nome foto
$id = substr(md5($id.date("is")), 0, 10);
$filename = $id.'.'.$ext;
if(empty($_SESSION['imm'])){
$_SESSION['imm'] = $filename;
}else{
$_SESSION['imm'] = $_SESSION['imm'] ." - ". $filename;
}
//===========================================//
$path = NICUPLOAD_PATH.'/'.$filename;
if(!move_uploaded_file($image, $path)) {
nicupload_error('Server error, failed to move file');
}
if($rfc1867) {
$status = apc_fetch('upload_'.$id);
}
if(!$status) {
$status = array();
}
$status['done'] = 1;
$status['width'] = $size[0];
$status['url'] = nicupload_file_uri($filename);
if($rfc1867) {
apc_store('upload_'.$id, $status);
}
nicupload_output($status, $rfc1867);
exit;
} else if(isset($_GET['check'])) { // Upload progress check
$check = $_GET['check'];
if(!is_numeric($check)) {
nicupload_error('Invalid upload progress id');
}
if($rfc1867) {
$status = apc_fetch('upload_'.$check);
if($status['total'] > 500000 && $status['current']/$status['total'] < 0.9 ) { // Large file and we are < 90% complete
$status['interval'] = 3000;
} else if($status['total'] > 200000 && $status['current']/$status['total'] < 0.8 ) { // Is this a largeish file and we are < 80% complete
$status['interval'] = 2000;
} else {
$status['interval'] = 1000;
}
nicupload_output($status);
} else {
$status = array();
$status['noprogress'] = true;
foreach($nicupload_allowed_extensions as $e) {
if(file_exists(NICUPLOAD_PATH.'/'.$check.'.'.$e)) {
$ext = $e;
break;
}
}
if($ext) {
$status['url'] = nicupload_file_uri($check.'.'.$ext);
}
nicupload_output($status);
}
}
// UTILITY FUNCTIONS
function nicupload_error($msg) {
echo nicupload_output(array('error' => $msg));
}
function nicupload_output($status, $showLoadingMsg = false) {
$script = '
try {
'.(($_SERVER['REQUEST_METHOD']=='POST') ? 'top.' : '').'nicUploadButton.statusCb('.json_encode($status).');
} catch(e) { alert(e.message); }
';
if($_SERVER['REQUEST_METHOD']=='POST') {
echo '<script>'.$script.'</script>';
} else {
echo $script;
}
if($_SERVER['REQUEST_METHOD']=='POST' && $showLoadingMsg) {
echo <<<END
<html><body>
<div id="uploadingMessage" style="text-align: center; font-size: 14px;">
[img]http://js.nicedit.com/ajax-loader.gif[/img]
[b]Uploading...[/b]
Please wait
</div>
</body></html>
END;
}
exit;
}
function nicupload_file_uri($filename) {
return NICUPLOAD_URI.'/'.$filename;
}
function ini_max_upload_size() {
$post_size = ini_get('post_max_size');
$upload_size = ini_get('upload_max_filesize');
if(!$post_size) $post_size = '8M';
if(!$upload_size) $upload_size = '2M';
return min( ini_bytes_from_string($post_size), ini_bytes_from_string($upload_size) );
}
function ini_bytes_from_string($val) {
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
switch($last) {
// The 'G' modifier is available since PHP 5.1.0
case 'g':
$val *= 1024;
case 'm':
$val *= 1024;
case 'k':
$val *= 1024;
}
return $val;
}
function bytes_to_readable( $bytes ) {
if ($bytes<=0)
return '0 Byte';
$convention=1000; //[1000->10^x|1024->2^x]
$s=array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB');
$e=floor(log($bytes,$convention));
return round($bytes/pow($convention,$e),2).' '.$s[$e];
}
?>
?>
questo viene anche gestito da uno script javascript che allega il contenuto nella text area, ma credo che per recuperare i dati che mi servono posso farlo dal file php.
ho provato alla riga 67 ad aggiungere i nomi delle immagini in una variabile di sessione che poi richiamo nella pagina dove devo appenderli ma ovviamente non facendo il refresh della pagina non mi vengono visualizzate al momento.
Qualcuno ha gia avuto a che fare con questo editor?
grazie Claudio