- Katılım
- 21 Eki 2013
- Konular
- 3,135
- Mesajlar
- 7,771
- Çözüm
- 3
- Online süresi
- 4mo 15d
- Reaksiyon Skoru
- 5,377
- Altın Konu
- 67
- Başarım Puanı
- 409
- Yaş
- 36
- MmoLira
- 1,372
- DevLira
- 0
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Web sitelerinin PHP'de dosya yükleme sistemlerini nasıl oluşturduklarını hiç merak ettiniz mi? Burada dosya yükleme işlemi hakkında bilgi sahibi olacağız. Aklınıza gelebilecek bir soru – 'Bu sistemle her türlü dosyayı yükleyebiliyor muyuz?'. Cevap evet, farklı uzantı türlerine sahip dosyalar yükleyebiliriz.
Yaklaşmak: PHP betiğini çalıştırmak için bir sunucuya ihtiyacımız var. Bu nedenle, Windows makinenizde XAMPP sunucusunun veya WAMP sunucusunun kurulu olduğundan emin olun.
HTML kod parçacığı: Dosyayı sunucuya yüklemek için HTML formunun HTML kaynak kodu aşağıdadır. HTML <form> etiketinde, dosyaların bir POST yöntemi ile gönderilmesine izin veren bir kodlama türü olan "enctype='multipart/form-data" kullanıyoruz. Bu kodlama olmadan, dosyalar POST yöntemiyle gönderilemez. Kullanıcıların bir form aracılığıyla dosya yüklemesine izin vermek istiyorsanız bu enctype'ı kullanmalıyız.
[CODE lang="html" title="HTML Kodu"]<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>File Upload Form</title>
</head>
<body>
<form action="file-upload-manager.php" method="post" enctype="multipart/form-data">
<!--multipart/form-data ensures that form data is going to be encoded as MIME data-->
<h2>Upload File</h2>
<label for="fileSelect">Filename:</label>
<input type="file" name="photo" id="fileSelect">
<input type="submit" name="submit" value="Upload">
<!-- name of the input fields are going to be used in our php script-->
<p><strong>Note:</strong>Only .jpg, .jpeg, .png formats allowed to a max size of 2MB.</p>
</form>
</body>
</html>
[/CODE]
Şimdi, dosya yükleme sistemini idare edebilecek bir PHP betiği yazma zamanı. dosya yükleme yöneticisi.php
[CODE lang="php" title="php"]<?php
// Check if the form was submitted
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// Check if file was uploaded without errors
if (isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0)
{
$allowed_ext = array("jpg" => "image/jpg",
"jpeg" => "image/jpeg",
"gif" => "image/gif",
"png" => "image/png");
$file_name = $_FILES["photo"]["name"];
$file_type = $_FILES["photo"]["type"];
$file_size = $_FILES["photo"]["size"];
// Verify file extension
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if (!array_key_exists($ext, $allowed_ext))
die("Error: Please select a valid file format.");
// Verify file size - 2MB max
$maxsize = 2 * 1024 * 1024;
if ($file_size > $maxsize)
die("Error: File size is larger than the allowed limit of 2MB");
// Verify MYME type of the file
if (in_array($file_type, $allowed_ext))
{
// Check whether file exists before uploading it
if (file_exists("upload/".$_FILES["photo"]["name"]))
echo $_FILES["photo"]["name"]." already exists!";
else
{
move_uploaded_file($_FILES["photo"]["tmp_name"],
"uploads/".$_FILES["photo"]["name"]);
echo "Your file uploaded successfully.";
}
}
else
{
echo "Error: Please try again!";
}
}
else
{
echo "Error: ". $_FILES["photo"]["error"];
}
}
?>
[/CODE]
Yukarıdaki komut dosyasında, formu gönderdikten sonra, bilgilere bir PHP süper küresel ilişkisel dizisi $_FILES aracılığıyla erişebiliriz. $_FILES dizisini kullanmanın yanı sıra, birçok yerleşik işlev önemli bir rol oynamaktadır. Bir dosya yüklemeyi bitirdikten sonra, komut dosyasında sunucunun istek yöntemini kontrol edeceğiz, eğer POST yöntemi ise devam edecek, aksi takdirde sistem bir hata verecektir. Daha sonra dosya adını, dosya boyutunu ve dosya türünü almak için $_FILES dizisine eriştik. Bu bilgileri aldıktan sonra, dosyanın boyutunu ve türünü doğrularız. Sonunda, dosyanın zaten var olup olmadığını kontrol etmek için dosyanın yükleneceği klasörde arama yaparız. Değilse, dosyayı geçici konumdan sunucuda istenen dizine taşımak için move_uploaded_file() kullandık ve işimiz bitti.
Yaklaşmak: PHP betiğini çalıştırmak için bir sunucuya ihtiyacımız var. Bu nedenle, Windows makinenizde XAMPP sunucusunun veya WAMP sunucusunun kurulu olduğundan emin olun.
HTML kod parçacığı: Dosyayı sunucuya yüklemek için HTML formunun HTML kaynak kodu aşağıdadır. HTML <form> etiketinde, dosyaların bir POST yöntemi ile gönderilmesine izin veren bir kodlama türü olan "enctype='multipart/form-data" kullanıyoruz. Bu kodlama olmadan, dosyalar POST yöntemiyle gönderilemez. Kullanıcıların bir form aracılığıyla dosya yüklemesine izin vermek istiyorsanız bu enctype'ı kullanmalıyız.
[CODE lang="html" title="HTML Kodu"]<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>File Upload Form</title>
</head>
<body>
<form action="file-upload-manager.php" method="post" enctype="multipart/form-data">
<!--multipart/form-data ensures that form data is going to be encoded as MIME data-->
<h2>Upload File</h2>
<label for="fileSelect">Filename:</label>
<input type="file" name="photo" id="fileSelect">
<input type="submit" name="submit" value="Upload">
<!-- name of the input fields are going to be used in our php script-->
<p><strong>Note:</strong>Only .jpg, .jpeg, .png formats allowed to a max size of 2MB.</p>
</form>
</body>
</html>
[/CODE]
Şimdi, dosya yükleme sistemini idare edebilecek bir PHP betiği yazma zamanı. dosya yükleme yöneticisi.php
// Check if the form was submitted
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// Check if file was uploaded without errors
if (isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0)
{
$allowed_ext = array("jpg" => "image/jpg",
"jpeg" => "image/jpeg",
"gif" => "image/gif",
"png" => "image/png");
$file_name = $_FILES["photo"]["name"];
$file_type = $_FILES["photo"]["type"];
$file_size = $_FILES["photo"]["size"];
// Verify file extension
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if (!array_key_exists($ext, $allowed_ext))
die("Error: Please select a valid file format.");
// Verify file size - 2MB max
$maxsize = 2 * 1024 * 1024;
if ($file_size > $maxsize)
die("Error: File size is larger than the allowed limit of 2MB");
// Verify MYME type of the file
if (in_array($file_type, $allowed_ext))
{
// Check whether file exists before uploading it
if (file_exists("upload/".$_FILES["photo"]["name"]))
echo $_FILES["photo"]["name"]." already exists!";
else
{
move_uploaded_file($_FILES["photo"]["tmp_name"],
"uploads/".$_FILES["photo"]["name"]);
echo "Your file uploaded successfully.";
}
}
else
{
echo "Error: Please try again!";
}
}
else
{
echo "Error: ". $_FILES["photo"]["error"];
}
}
?>
[/CODE]
Yukarıdaki komut dosyasında, formu gönderdikten sonra, bilgilere bir PHP süper küresel ilişkisel dizisi $_FILES aracılığıyla erişebiliriz. $_FILES dizisini kullanmanın yanı sıra, birçok yerleşik işlev önemli bir rol oynamaktadır. Bir dosya yüklemeyi bitirdikten sonra, komut dosyasında sunucunun istek yöntemini kontrol edeceğiz, eğer POST yöntemi ise devam edecek, aksi takdirde sistem bir hata verecektir. Daha sonra dosya adını, dosya boyutunu ve dosya türünü almak için $_FILES dizisine eriştik. Bu bilgileri aldıktan sonra, dosyanın boyutunu ve türünü doğrularız. Sonunda, dosyanın zaten var olup olmadığını kontrol etmek için dosyanın yükleneceği klasörde arama yaparız. Değilse, dosyayı geçici konumdan sunucuda istenen dizine taşımak için move_uploaded_file() kullandık ve işimiz bitti.
- Katılım
- 3 Eki 2017
- Konular
- 1,673
- Mesajlar
- 18,445
- Çözüm
- 48
- Online süresi
- 9mo 24d
- Reaksiyon Skoru
- 8,721
- Altın Konu
- 297
- Başarım Puanı
- 374
- MmoLira
- 41,550
- DevLira
- 753
Paylaşım için teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 7
- Görüntüleme
- 576






