|
|
|
ขอความช่วยเหลือการจัดการและตั้งค่าไดเรคเทอรี่ upload ของ php |
|
|
|
|
|
|
|
พอดีตอนนี้ผมได้่ทำการปรับแจ่งหน้าเพิ่มข้อมูลให้สามารถ UPLOAD รูปไปพร้อมข้อมูลได้แล้วครับ
แต่อยากให้รูปที่อัพโหลดนั้น สร้างไดเรกทอรี่ตั้งชื่อจาก TEXTBOX แล้วให้นำรูปที่ได้ใส่ลงใน ไดเรคเทอรี่นั้น
และให้ค่าไดเรกเมอร์รี้ พร้อมชื่อไฟล์ ระบุลงในดาต้าเบส
ผมมีคำสั้ง ให้มันสร้างไดเรกเทอรรี่ได้แล้วครับ แต่มันไม่เก็บ
Code (PHP)
<input name="txtUsername" type="text" id="txtUsername" OnChange="JavaScript:doCallAjax();" OnKeyPress="return chkNumber(this)" maxlength="13">
<span id="mySpan"></span>
<form name="form2" method="post" action="phpMultiUploadResizeToMySQL2.php" enctype="multipart/form-data">
<label> <input type="file" name="fileUpload[]"><br>
<input type="file" name="fileUpload[]"><br>
<input type="file" name="fileUpload[]"><br>
<p>===================</p>
<input type="file" name="fileUpload2[]"><br>
<input type="file" name="fileUpload2[]"><br>
<input type="file" name="fileUpload2[]"><br>
<input type="file" name="fileUpload2[]"><br></label>
</form>
การอัพโหลด
Code (PHP)
<?
//upload image 1
for($i=0;$i<count($_FILES["fileUpload"]["name"]);$i++)
{
if(trim($_FILES["fileUpload"]["tmp_name"][$i]) != "")
{
$images = $_FILES["fileUpload"]["tmp_name"][$i];
$new_images = $_FILES["fileUpload"]["name"][$i];
mkdir("MyResize/".$_POST['txtUsername']);
copy($_FILES["fileUpload"]["tmp_name"][$i],$_POST['txtUsername'].$_FILES["fileUpload"]["name"][$i]);
$width=640; //*** Fix Width & Heigh (Autu caculate) ***//
$size=GetimageSize($images);
$height=round($width*$size[1]/$size[0]);
$images_orig = ImageCreateFromJPEG($images);
$photoX = ImagesX($images_orig);
$photoY = ImagesY($images_orig);
$images_fin = ImageCreateTrueColor($width, $height);
ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
ImageJPEG($images_fin,"MyResize/".$new_images);
ImageDestroy($images_orig);
ImageDestroy($images_fin);
//User Make No Echo
//echo "Resize Successful.<br>";
//*** Insert Record ***//
$objConnect = mysql_connect("localhost","library","xxxxxx") or die("Error Connect to Database");
$objDB = mysql_select_db("library");
$strSQL = "INSERT INTO book_image";
$strSQL .="(image_id,image_path,book_isbn,image_type) VALUES
('".$new_images."','"."MyResize/".$_POST['txtUsername'].$_FILES["fileUpload"]["name"][$i]."','".$_POST['txtUsername']."','1')";
//('".$new_images."','".$_FILES["fileUpload"]["name"][$i]."','".$_POST['txtUsername']."')";
$objQuery = mysql_query($strSQL);
}
}
//end upload image 1
?>
<?
//upload image 2
for($i=0;$i<count($_FILES["fileUpload2"]["name"]);$i++)
{
if(trim($_FILES["fileUpload2"]["tmp_name"][$i]) != "")
{
$images = $_FILES["fileUpload2"]["tmp_name"][$i];
$new_images = $_FILES["fileUpload2"]["name"][$i];
copy($_FILES["fileUpload2"]["tmp_name"][$i],"MyResize/".$_FILES["fileUpload2"]["name"][$i]);
// จาก Upload 1 ได้ทำการสร้าง mkdir("MyResize/".$_POST['txtUsername']); แล้วเฝนจะให้ใส่รูปเพิ่มเข้าไปเลยครับ
$width=640; //*** Fix Width & Heigh (Autu caculate) ***//
$size=GetimageSize($images);
$height=round($width*$size[1]/$size[0]);
$images_orig = ImageCreateFromJPEG($images);
$photoX = ImagesX($images_orig);
$photoY = ImagesY($images_orig);
$images_fin = ImageCreateTrueColor($width, $height);
ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
ImageJPEG($images_fin,"MyResize/".$new_images);
ImageDestroy($images_orig);
ImageDestroy($images_fin);
//User Make No Echo
//echo "Resize Successful.<br>";
//*** Insert Record ***//
$objConnect = mysql_connect("localhost","library","xxxxxx") or die("Error Connect to Database");
$objDB = mysql_select_db("library");
$strSQL = "INSERT INTO book_image";
$strSQL .="(image_id,image_path,book_isbn,image_type) VALUES
('".$new_images."','".$_FILES["fileUpload2"]["name"][$i]."','".$_POST['txtUsername']."','2')";
//('".$new_images."','".$_FILES["fileUpload"]["name"][$i]."','".$_POST['txtUsername']."')";
$objQuery = mysql_query($strSQL);
}
}
//end upload image 2
?>
Tag : PHP, MySQL, HTML/CSS, JavaScript, Ajax
|
ประวัติการแก้ไข 2012-03-16 17:02:20
|
|
|
|
|
Date :
2012-03-16 17:00:46 |
By :
numprick |
View :
988 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
copy($_FILES["fileUpload"]["tmp_name"][$i],$_POST['txtUsername']."/".$_FILES["fileUpload"]["name"][$i]);
น่าจะแบบนี้ครับ
|
|
|
|
|
Date :
2012-03-16 21:50:58 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 1 เขียนโดย : webmaster เมื่อวันที่ 2012-03-16 21:50:58
รายละเอียดของการตอบ ::
ผมได้ใส่เข้าไปแล้ว ครับ
เป็น ดังต่อไปนี้
Code (PHP)
<?
//upload image 1
for($i=0;$i<count($_FILES["fileUpload"]["name"]);$i++)
{
if(trim($_FILES["fileUpload"]["tmp_name"][$i]) != "")
{
$images = $_FILES["fileUpload"]["tmp_name"][$i];
$new_images = $_FILES["fileUpload"]["name"][$i];
mkdir("MyResize/".$_POST['txtUsername']);
// Place image in the folder
//mkdir("images/$pid", 0700); //สร้างโฟลเดอร์
//$newname = $fileUpload."_im.jpg";
copy($_FILES["fileUpload"]["tmp_name"][$i],"MyResize/".$_POST['txtUsername']."/".$_FILES["fileUpload"]["name"][$i]);
$width=640; //*** Fix Width & Heigh (Autu caculate) ***//
$size=GetimageSize($images);
$height=round($width*$size[1]/$size[0]);
$images_orig = ImageCreateFromJPEG($images);
$photoX = ImagesX($images_orig);
$photoY = ImagesY($images_orig);
$images_fin = ImageCreateTrueColor($width, $height);
ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
ImageJPEG($images_fin,"MyResize/$txtUsername".$new_images); //ผมยัง งง อันนี้เป็น Path ดึงรูปมั้ยครับ
ImageDestroy($images_orig);
ImageDestroy($images_fin);
//User Make No Echo
//echo "Resize Successful.<br>";
//*** Insert Record ***//
$objConnect = mysql_connect("localhost","library","compaq") or die("Error Connect to Database");
$objDB = mysql_select_db("library");
$strSQL = "INSERT INTO book_image";
$strSQL .="(image_id,image_path,book_isbn,image_type) VALUES
('".$new_images."','"."MyResize/".$_POST['txtUsername'].$_FILES["fileUpload"]["name"][$i]."','".$_POST['txtUsername']."','1')"; // มีปัญหาครับ MyResize/54645463567357.JPG
$objQuery = mysql_query($strSQL);
}
}
//end upload image 1
?>
ผมได้ทำการลองดูครับพี่
txtUsername = 5464546356735
ไฟล์ชื่อ = 7.jpg
ผมลัพท์ที่ได้
1 มีการสร้าง โฟลเดอร์ ชื่อ 5464546356735 ใหม่ขึ้นใน MyResize/xxxxxxxxxxxxx
2 มีการ เอาไฟล์ต้นฉบับ ปรับขนาดแล้วมาเก็บไว้ใน MyResize/5464546356735
3 มีการ นำไฟล์ที่ผ่านการปรับขนาดและเปลี่ยนชื่อ 54645463567357.jpg เข้าไปยัง MyResize
4 ในดาต้าเบสมีการเก็บไฟล์ที่ชื่อ MyResize/54645463567357.JPG
5 ในกรณีที่เคยใส่ไฟล์ 7.jpg ไปแล้ว พออัพครั้งต่อไปใน txtUsername ค่าอื่นๆ กะไม่เขียนลงในดาต้าเบส ครับ
ทั้งหมดมันดูขัดกันไปหน่อยครับ
ผมเลยขอคำแนะนำ
1 ทำอย่างไรให้ดาต้าเบสเขียนชื่อที่เป็น MyResize/xxxxxxxxxxxxx/xxx.jpg
2 ทำอย่างไรให้สามารถเขียนไฟลฺที่มีชื่อซ้ำกันลงดาต้าเบสได้
|
|
|
|
|
Date :
2012-03-16 23:20:26 |
By :
numprick |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 ทำอย่างไรให้ดาต้าเบสเขียนชื่อที่เป็น MyResize/xxxxxxxxxxxxx/xxx.jpg
แนะนำให้เก็บชื่อโฟลเดอร์ของแต่ละ user ครับ แล้วใน table ไฟล์ก็เก็บ user_id เอา เวลาแสดงผลก็ join กันจะได้ path ที่ถูกต้องเอง
2 ทำอย่างไรให้สามารถเขียนไฟลฺที่มีชื่อซ้ำกันลงดาต้าเบสได้
แยกโฟลเดอร์ตาม user แล้วไม่น่าจะเกิดปัญหาที่ว่าได้
|
|
|
|
|
Date :
2012-03-17 01:50:24 |
By :
ikikkok |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 ทำอย่างไรให้ดาต้าเบสเขียนชื่อที่เป็น MyResize/xxxxxxxxxxxxx/xxx.jpg
แนะนำให้เก็บชื่อโฟลเดอร์ของแต่ละ user ครับ แล้วใน table ไฟล์ก็เก็บ user_id เอา เวลาแสดงผลก็ join กันจะได้ path ที่ถูกต้องเอง
+++
อันนี้ผมได้ทำการแยก เป็น Table ของ Image มาครับ
ภายในเก็บ ID(PK)(auto) Image_PATH ISBN
ในตอนนี้ปัญหานี้คือ
ต้องการให้ MyResize/xxxxxxxxxxxxx/xxx.jpg
แต่ตอนนี้เป็น MyResize/xxxxxxxxxxxxxN.jpg อยู่ ครับ
Code (PHP)
<?
"MyResize/".$_POST['txtUsername']."/".$_FILES["fileUpload"]["name"][$i]
Code (PHP)
'"."MyResize/".$_POST['txtUsername'].$_FILES["fileUpload"]["name"][$i]."'
2 ทำอย่างไรให้สามารถเขียนไฟลฺที่มีชื่อซ้ำกันลงดาต้าเบสได้
แยกโฟลเดอร์ตาม user แล้วไม่น่าจะเกิดปัญหาที่ว่าได้
อันนี้ผมก็สงสัย ครับ
ไฟล์ มัน แยากกันอยู่ด้วยครับ
ไฟล์มันเป็น 2 อัน
อันแรกสร้างโฟล์เดอร์ใหม่ และเอาไฟล์ ต้นฉบับ เข้าใน โฟล์เดอร์
อันที่สอง รูป ที่มีการเปลี่ยนชื่อ อยู่ ด้านนอก โฟล์เดอร์ ที่สร้างใหม่ ละมีการเป็ลี่ยนชื่อเป็น xxxxxxxxxxและชื่อไฟล์ต้นฉบับ
รายละเอียดเทเบิล แล้วก็ โฟล์เดอร์ ครับ
|
|
|
|
|
Date :
2012-03-17 08:57:45 |
By :
numprick |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|