• 12-05-2014, 21:13:13
    #1
    Php kodlama hiç bilmiyorum ufak tefek bilgim var o yüzden aşağıda vereceğim kodlar için sizlerden yardım rica ediyorum.
    Script de resim dosyalarını karışık isimlerle kaydediyor. Benim istediğim resim dosyasının ismi neyse olduğu gibi kalsın o şekilde yükleme yapsın. Eğer mümkünse nasıl yapabiliriz ?

    // Get a file name
    if (isset($_REQUEST["name"])) {
    	$fileName = uniqid($prefix).$_REQUEST["name"];
    } elseif (!empty($_FILES)) {
    	$fileName = uniqid($prefix).$_FILES["file"]["name"];
    } 
    
    $fileName = preg_replace('/[^\w\._]+/', '', $fileName);
    $filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName;
  • 12-05-2014, 21:51:59
    #2
    $fileName =$_FILES["file"]["name"];
    $filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName;
    bu kodla değiştirin olduğıu gibi kalır. Kodnuzda kısaldı

    Edit: kodun tamamını görmediğim için filename değişkeninin tekrar kullanılma ihtimaline karşı 2satıra cıkardım
  • 12-05-2014, 22:12:23
    #3
    maskidea adlı üyeden alıntı: mesajı görüntüle
    $fileName =$_FILES["file"]["name"];
    $filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName;
    bu kodla değiştirin olduğıu gibi kalır. Kodnuzda kısaldı

    Edit: kodun tamamını görmediğim için filename değişkeninin tekrar kullanılma ihtimaline karşı 2satıra cıkardım
    temp dosyasına orjinal ismi ile upload etti. geçici temp dosyasına ama asıl yeri olan upload dosyasına farklı isim ile kaydetti. upload.php içeriği aşağıda hocam

    <?php
    
    	include '../../../../controllers/cont.main.php';
    
    /**
     * upload.php
     *
     * Copyright 2013, Moxiecode Systems AB
     * Released under GPL License.
     *
     * License: http://www.plupload.com/license
     * Contributing: http://www.plupload.com/contributing
     */
    
    #!! IMPORTANT: 
    #!! this file is just an example, it doesn't incorporate any security checks and 
    #!! is not recommended to be used in production environment as it is. Be sure to 
    #!! revise it and customize to your needs.
    
    
    // Make sure file is not cached (as it happens for example on iOS devices)
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    
    /* 
    // Support CORS
    header("Access-Control-Allow-Origin: *");
    // other CORS headers if any...
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    	exit; // finish preflight CORS requests here
    }
    */
    
    // 5 minutes execution time
    @set_time_limit(5 * 60);
    
    // Uncomment this one to fake upload time
    // usleep(5000);
    
    // Settings
    $sub_folders = 'temp';
    $prefix = 'fufu';
    $targetDir = ROOT_DIR . DIRECTORY_SEPARATOR . "uploads" . DIRECTORY_SEPARATOR . $sub_folders;
    $cleanupTargetDir = true; // Remove old files
    $maxFileAge = 5 * 60; // Temp file age in seconds
    
    
    // Create target dir
    if (!file_exists($targetDir)) {
    	@mkdir($targetDir);
    }
    
    // Get a file name
    if (isset($_REQUEST["name"])) {
    	$fileName = uniqid($prefix).$_REQUEST["name"];
    } elseif (!empty($_FILES)) {
    	$fileName = uniqid($prefix).$_FILES["file"]["name"];
    } 
    
    $fileName = preg_replace('/[^\w\._]+/', '', $fileName);
    $filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName;
    
    // Chunking might be enabled
    $chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0;
    $chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 0;
    
    
    // Remove old temp files	
    if ($cleanupTargetDir) {
    	if (!is_dir($targetDir) || !$dir = opendir($targetDir)) {
    		die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "Failed to open temp directory."}, "id" : "id"}');
    	}
    
    	while (($file = readdir($dir)) !== false) {
    		$tmpfilePath = $targetDir . DIRECTORY_SEPARATOR . $file;
    
    		// If temp file is current file proceed to the next
    		if ($tmpfilePath == "{$filePath}.part") {
    			continue;
    		}
    
    		// Remove temp file if it is older than the max age and is not the current file
    		if (preg_match('/\.part$/', $file) && (filemtime($tmpfilePath) < time() - $maxFileAge)) {
    			@unlink($tmpfilePath);
    		}
    	}
    	closedir($dir);
    }	
    
    
    // Open temp file
    if (!$out = @fopen("{$filePath}.part", $chunks ? "ab" : "wb")) {
    	die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}');
    }
    
    if (!empty($_FILES)) {
    	if ($_FILES["file"]["error"] || !is_uploaded_file($_FILES["file"]["tmp_name"])) {
    		die('{"jsonrpc" : "2.0", "error" : {"code": 103, "message": "Failed to move uploaded file."}, "id" : "id"}');
    	}
    
    	// Read binary input stream and append it to temp file
    	if (!$in = @fopen($_FILES["file"]["tmp_name"], "rb")) {
    		die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
    	}
    } else {	
    	if (!$in = @fopen("php://input", "rb")) {
    		die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
    	}
    }
    
    while ($buff = fread($in, 4096)) {
    	fwrite($out, $buff);
    }
    
    @fclose($out);
    @fclose($in);
    
    // Check if file has been uploaded
    if (!$chunks || $chunk == $chunks - 1) {
    	// Strip the temp .part suffix off 
    	rename("{$filePath}.part", $filePath);
    }
    
    // Return Success JSON-RPC response
    die('{"jsonrpc" : "2.0", "result" : null, "id" : "id", "cleanFileName" : "'.$fileName.'"}');
  • 12-05-2014, 23:08:49
    #4
    Hocam inceledim kod doğru.

    Hedef klasörün yani asıl klasörünün yazdırma izni olduğundan emin olmalısın ftp den klasörün ve üst klasörünün izinlerini 777 olarak değiştir yeterli olacak.
  • 12-05-2014, 23:31:44
    #5
    maskidea adlı üyeden alıntı: mesajı görüntüle
    Hocam inceledim kod doğru.

    Hedef klasörün yani asıl klasörünün yazdırma izni olduğundan emin olmalısın ftp den klasörün ve üst klasörünün izinlerini 777 olarak değiştir yeterli olacak.
    değiştirdim hocam siz söylemeden önce de 777 olarak ayarlıydı

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 23:21:03 -->-> Daha önceki mesaj 23:18:28 --

    uploads/1/fu_53711c3bd643e.jpg ( küçük resim )
    uploads/1/original_fu_53711c3ba7391.jpg (orjinal resim )
    uploads/temp/burda-ne-var.jpg ( geçici dosya )

    sizin verdiğiniz kodu değiştirdikten sonra geçici dosyadaki ismi değişti sadece diğerleri aynı şekilde kaydetti

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 23:31:44 -->-> Daha önceki mesaj 23:21:03 --

    sanırım aşağıdaki linkteki yükleme eklentisini kullanmış

    link
  • 12-05-2014, 23:51:23
    #6
    yok class ı cağıran bir kod yok en üstte bir include dossyan var onun ne yaptığına bakmak lazım

    rename("{$filePath}.part", $filePath);
    bu satırı alttaki gibi iptal ederek denermisin
    //rename("{$filePath}.part", $filePath);

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 23:45:55 -->-> Daha önceki mesaj 23:43:58 --

    en üstte yaptığımız değişiklik sabit tabi onu geri almadan denemelisin

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 23:51:23 -->-> Daha önceki mesaj 23:45:55 --

    class.upload.php istersen google da bunu aratıp kullan çok başarıı ayarlarının tamamını değişkenlerle yapabiliyorsun.
  • 13-05-2014, 00:07:30
    #7
    maskidea adlı üyeden alıntı: mesajı görüntüle
    yok class ı cağıran bir kod yok en üstte bir include dossyan var onun ne yaptığına bakmak lazım

    rename("{$filePath}.part", $filePath);
    bu satırı alttaki gibi iptal ederek denermisin
    //rename("{$filePath}.part", $filePath);

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 23:45:55 -->-> Daha önceki mesaj 23:43:58 --

    en üstte yaptığımız değişiklik sabit tabi onu geri almadan denemelisin

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 23:51:23 -->-> Daha önceki mesaj 23:45:55 --

    class.upload.php istersen google da bunu aratıp kullan çok başarıı ayarlarının tamamını değişkenlerle yapabiliyorsun.
    <?php
    
    	ob_start();
    	session_start();
    	error_reporting(E_ALL ^ E_NOTICE);
    
    	/* DEFINE ROOT DIR */
    	define( 'ROOT_DIR', realpath(dirname(__FILE__) . '/..') );
    
    	/* SPECIFIC ERROR LOG FILE */
    	@ini_set("log_errors" , "1");
    	@ini_set("error_log" , ROOT_DIR.'/ninja-error.log');
    	@ini_set("display_errors" , "0");
    
    	/* INCLUDE IMPORTANT FILES*/
    	$ninja_config = json_decode(file_get_contents(ROOT_DIR.'/ninja-configs/config.ninja.inc'), true);
    	$ninja_admin = json_decode(file_get_contents(ROOT_DIR.'/ninja-configs/config.ninja-admin.inc'), true);
    	$mailer_config = json_decode(file_get_contents(ROOT_DIR.'/ninja-configs/config.mailer.inc'), true);
    	$ninja_config = array_merge($ninja_config, json_decode(file_get_contents(ROOT_DIR.'/ninja-configs/config.db.inc'), true));
    
    
    	/*	Include classes */
    	require ROOT_DIR.'/ninja-classes/PHPMailerAutoload.php';
    	require ROOT_DIR.'/ninja-classes/class.db.php';
    	require ROOT_DIR.'/ninja-classes/class.ninja.php';
    
    	/*  Calling object */
    	$ninja = new ninja($ninja_config);
    
    	/* INCLUDE APPLICATIONS's CONTROLLERS */
    	
    	$lang = array();
    
    	// ADD USER CONTROLLERS
    	if(file_exists(ROOT_DIR.'/ninja-applications/user/controllers/cont.init.php')){
    		include ROOT_DIR.'/ninja-applications/user/controllers/cont.init.php';
    	}
    
    	if(isset($ninja_config['applications'])){
    		foreach($ninja_config['applications'] as &$value){
    			// INCLUDE MAIN CONTROLLERS
    			if(!file_exists(ROOT_DIR.'/ninja-applications/'.$value.'/install')){
    			 include ROOT_DIR.'/ninja-applications/'.$value.'/controllers/cont.init.php';
    			}
    		}
    	}
    
    	/*  Generate TOKEN for whole FORM */
    	$_SESSION['token'] = '';
    
    	/* OTHERS */
    
    	date_default_timezone_set($ninja_config['timezone']);
    	$now = date("Y-m-d H:i:s");
  • 13-05-2014, 00:12:53
    #8
    evet class ı orda çağırıyormuş class eklemeden çalışmayacaktır. class.upload ı kullanmanı tavsiye ederim.
  • 13-05-2014, 00:13:40
    #9
    maskidea adlı üyeden alıntı: mesajı görüntüle
    evet class ı orda çağırıyormuş class eklemeden çalışmayacaktır.
    sonuç olarak hocam