 |
ขอทราบวิธีการอัพโหลดรูปข้าม Sub Domain ทีค่ะ ต้องเขียนอย่างไรคะ |
|
 |
|
|
 |
 |
|
ก็กำหนด action ตรงฟอร์มไปสิครับ???
ปัญหามันคือ?
<form method="post" action="https://x.x.x/x.xxx" enctype="multipart/form-data">
แล้วเวลาอัปโหลดใครเขาให้ใช้ copy() ครับ ลองค้นหาดูใหม่ซิว่าเขาให้ใช้อะไร?
|
ประวัติการแก้ไข 2023-06-28 17:45:51
 |
 |
 |
 |
Date :
2023-06-28 17:45:16 |
By :
mr.v |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้ คุณสามารถใช้ copy() แทน move_uploaded_file() เพื่ออัปโหลดรูปภาพไปยังโดเมนย่อยต่างๆ ใน PHP
ฟังก์ชัน copy() จะคัดลอกไฟล์ที่อัปโหลดไปยังเส้นทางที่ถูกต้อง
ในขณะที่ฟังก์ชัน move_uploaded_file() จะย้ายไฟล์ที่อัปโหลดไปยังเส้นทางที่ถูกต้อง
ข้อแตกต่างหลักระหว่างสองฟังก์ชันคือ
move_uploaded_file() จะลบไฟล์ที่อัปโหลดออกจากไดเร็กทอรีชั่วคราว(temporary directory) ในขณะที่ copy() จะไม่ลบ
syntax ของ copy() ก็ตามนี้
https://www.php.net/manual/en/function.copy.php
สิงที่คุณทำไปดูผิวเผินน่าจะถูกแล้ว ถ้าจะพลาดส่วนใหญ่จะเป็นการกำหนด path
ถ้าอยากรู้ว่าที่ไม่สำเร็จเป็นเพราะอะไร ให้เปิดการแสดง error
แล้วนำข้อความทางเทคนิคไปค้นหาคำตอบจาก google
ตัวอย่างการอัปโหลดด้วย copy() ไปยัง multiple sub-domains
<?php
// Define the upload paths for the different subdomains.
$subdomain1_upload_path = '/home/subdomain1/public_html/uploads/';
$subdomain2_upload_path = '/home/subdomain2/public_html/uploads/';
// Get the subdomain from the request.
$subdomain = $_SERVER['HTTP_HOST'];
// Check if the subdomain is valid.
if (!in_array($subdomain, array('subdomain1', 'subdomain2'))) {
die('Invalid subdomain');
}
// Get the uploaded file.
$uploaded_file = $_FILES['image'];
// Copy the uploaded file to the correct path.
if ($subdomain == 'subdomain1') {
copy($uploaded_file['tmp_name'], $subdomain1_upload_path . $uploaded_file['name']);
} else {
copy($uploaded_file['tmp_name'], $subdomain2_upload_path . $uploaded_file['name']);
}
// Set the correct headers for the response.
header('Content-Type: application/json');
header('Content-Length: 0');
// Exit the script.
exit();
?>
|
 |
 |
 |
 |
Date :
2023-06-28 20:13:54 |
By :
009 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อย่างที่ข้างบนบอก copy คือการทำซ้ำ ไม่ใช่ย้าย
ถ้าจะดันทุรังใช้ต่อไปก็ตามใจคุณ
แต่ข้อเสียมี ไม่ใช่ไม่มี
1. ไฟล์จะบวมไปเรื่อยๆเพราะสะสมไม่มีลบ แล้วก็เชื่อว่าไม่มีการตามไปใส่ใจนั่งลบในโฟลเดอร์ temp หรอก
2. ถ้าไปเจอ server ที่คนดูแลเขี้ยวๆ (ด้วยเหตุผลข้างบน+อื่นๆ) เขาตั้งค่าไม่อนุญาตให้ใช้คำสั่งนี้ในการอัปโหลด เว็บคุณก็แค่เจ๊ง แล้วก็มาถามอีกว่าทำไมทำงานบน localhost ได้ บน server จริงไม่ได้.
3. ถ้ามีใครสักคน สามารถอ่านไฟล์ใน temp ได้ ผ่านการลักลอบยังไงสักอย่าง ไม่ว่าด้วยเหตุผลอะไรก็ตาม แล้วไฟล์นั้น ดันเป็นการอัปโหลดไฟล์สำคัญ ก็แค่ข้อมูลรั่ว เตรียมตัวรับกรรมไป 
|
 |
 |
 |
 |
Date :
2023-06-29 01:02:50 |
By :
mr.v |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
กรณีของคุณข้างบนเป็นการคัดลอกไฟล์ไปยัง sub domain ที่อยู่บน server เดียวกัน
จะไม่สามารถทำงานได้ถ้า sub domain นั้นอยู่คนละ server.
การอัปโหลด จขกท. ไม่ได้บอกจากไหนไปไหน หมายถึงจาก form เว็บ a ไปยัง server b หรือ จาก form เว็บ a ไปยัง server a แล้วจาก server a ไป server b อีกที
ในกรณีที่อัปโหลดข้าม server แนะนำให้ใช้ cURL
อ่านวิธีทำที่ https://rundiz.com/?p=805
|
 |
 |
 |
 |
Date :
2023-06-29 01:09:13 |
By :
mr.v |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|