|
|
|
สำคัญจริงๆครับ ขอความช่วยเหลือหน่อยครับ เพื่อไม่ให้เสียเวลา ผมขอเริ่มเลยแล้วกันนะครับ... ในการอัพโหลด |
|
|
|
|
|
|
|
ผม ไม่แน่ใจนะฮะ ลองดูละกันเผื่อ ช่วยได้บ้าง
ผมมี Class upload file ซึ่งมี Function save_file($path, $mode) ซึ่งผมจะเพิ่ม parameter เป็น save_file($path, $mode , $fileNameUser) ซึ่ง fileNameUser เกิดจากการ รหัสสมาชิก นะฮะ
//************************************************************************************************************
<?
/*
Error codes:
0 - "No file was uploaded"
1 - "Maximum file size exceeded"
2 - "Maximum image size exceeded"
3 - "Only specified file type may be uploaded"
4 - "File already exists" (save only)
*/
class uploader {
var $file;
var $errors;
var $accepted;
var $new_file;
var $new_file2;
var $max_filesize;
var $max_image_width;
var $max_image_height;
function max_filesize($size){
$this->max_filesize = $size;
}
function max_image_size($width, $height){
$this->max_image_width = $width;
$this->max_image_height = $height;
}
function upload($filename, $accept_type, $extention) {
// get all the properties of the file
$index = array("file", "name", "size", "type");
for($i = 0; $i < 4; $i++) {
$file_var = '$' . $filename . (($index[$i] != "file") ? "_" . $index[$i] : "");
eval('global ' . $file_var . ';');
eval('$this->file[$index[$i]] = ' . $file_var . ';');
}
if($this->file["file"] && $this->file["file"] != "none") {
//test max size
if($this->max_filesize && $this->file["size"] > $this->max_filesize) {
$this->errors[1] = "Maximum file size exceeded. File may be no larger than " . $this->max_filesize/1000 . "KB.";
return False;
}
if(ereg("image", $this->file["type"])) {
$image = getimagesize($this->file["file"]);
$this->file["width"] = $image[0];
$this->file["height"] = $image[1];
// test max image size
if(($this->max_image_width || $this->max_image_height) && (($this->file["width"] > $this->max_image_width) || ($this->file["height"] > $this->max_image_height))) {
$this->errors[2] = "Maximum image size exceeded. Image may be no more than " . $this->max_image_width . " x " . $this->max_image_height . " pixels";
return False;
}
switch($image[2]) {
case 1:
$this->file["extention"] = ".gif";
break;
case 2:
$this->file["extention"] = ".jpg";
break;
case 3:
$this->file["extention"] = ".png";
break;
default:
$this->file["extention"] = $extention;
break;
}
}
else if(!ereg("(\.)([a-z0-9]{3,5})$", $this->file["name"]) && !$extention) {
// add new mime types here
switch($this->file["type"]) {
case "text/plain":
$this->file["extention"] = ".txt";
break;
default:
break;
}
}
else {
$this->file["extention"] = $extention;
}
// check to see if the file is of type specified
if($accept_type) {
if(ereg($accept_type, $this->file["type"])) { $this->accepted = True; }
else { $this->errors[3] = "Only " . ereg_replace("\|", " or ", $accept_type) . " files may be uploaded"; }
}
else { $this->accepted = True; }
}
else { $this->errors[0] = ""; }
return $this->accepted;
}
//function save_file($path, $mode){ // ปกติจะใช้คำสั่งนี้ ฮะ
function save_file($path, $mode , $fileNameUser) {
global $NEW_NAME;
// echo "<br>inside save_file function (path, mode) $path , $mode";
if($this->accepted) {
// very strict naming of file.. only lowercase letters, numbers and underscores
//$new_name = ereg_replace("[^a-z0-9._]", "", ereg_replace(" ", "_", ereg_replace("%20", "_", strtolower($this->file["name"])))); ปกติจะใช้คำสั่งนี้ ฮะ
$new_name = $fileNameUser ; // เพิ่มใหม่สำหรับ รหัสสมาชิก
// check for extention and remove
if(ereg("(\.)([a-z0-9]{3,5})$", $new_name)) {
$pos = strrpos($new_name, ".");
if(!$this->file["extention"]) { $this->file["extention"] = substr($new_name, $pos, strlen($new_name)); }
$new_name = substr($new_name, 0, $pos);
}
$this->new_file = $path . $new_name . $this->file["extention"] ;
$NEW_NAME = $new_name . $this->file["extention"] ;
switch($mode) {
case 1: // overwrite mode
$aok = copy($this->file["file"], $this->new_file);
break;
case 2: // create new with incremental extention
while(file_exists($path . $new_name . $copy . $this->file["extention"])) {
$copy = "_copy" . $n;
$n++;
}
$this->new_file = $path . $new_name . $copy . $this->file["extention"];
$this->new_file2 = $new_name . $copy . $this->file["extention"];
// echo "<br>inside save_file function file1 ->". $this->file["file"] ." file2 ->".$this->new_file ;
$aok = copy($this->file["file"], $this->new_file);
break;
case 3: // do nothing if exists, highest protection
if(file_exists($this->new_file)){
$this->errors[4] = "File "" . $this->new_file . "" already exists";
}
else {
$aok = rename($this->file["file"], $this->new_file);
}
break;
default:
break;
}
if(!$aok) { unset($this->new_file); }
return $aok;
}
}
}
?>
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
วิธีเรียกใช้ฮะ
if ( ( is_null($userfile1) === FALSE ) and ( $userfile1 !== "" ) ){
$PATH ="images/" ;
$FILENAME = "userfile1" ;
$SAVE_MODE = 2;
$userfile="userfile1" ;
$upload = new uploader;
$upload->max_filesize(1000000);
if( $upload->upload("$FILENAME", "$ACCEPT", "$EXTENSION") ) {
// if($upload->save_file( "$PATH", $SAVE_MODE)) { ปกติ จะใช้คำสั่งนี้ฮะ
if($upload->save_file( "$PATH", $SAVE_MODE , $memberCode )) {
print("<center><p>Saved as: $pathThum/" . $upload->new_file . "<p>");
print_file($upload->new_file, $upload->file["type"], 2);
echo "<br>Finish Upload!!";
|
|
|
|
|
Date :
21 มี.ค. 2548 10:38:59 |
By :
bobo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอ code ในส่วนของการ save รูปหน่อยนะครับ ทำไมถึงเปลี่ยนชื่อไม่ได้
|
|
|
|
|
Date :
21 มี.ค. 2548 18:17:24 |
By :
@W_IN |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โค๊ดก็เอามาจากเว็บนี้ทั้งดุ้นเลยครับ แก้ไขนิดหน่อยแล้วเอาชื่อลงฐานข้อมูลเวลาเก็บก็เก็บทั้งชื่อและนามสกุล
แต่ต้องการเปลี่ยนชื่อของไฟล์ที่อัพโหลดเป็นรัหสของผู้ส่งเท่านั้น
|
|
|
|
|
Date :
21 มี.ค. 2548 22:53:15 |
By :
NimKab |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|