MRsuffix Berat
Decapat
- Katılım
- 11 Ekim 2021
- Mesajlar
- 251
- Çözümler
- 1
Daha fazla
- Sistem Özellikleri
- Lenovo Gaming 3
10.Nesil Core i5 10300H
16Gb RAM
1Tb HDD
256SSD
GTX1650Ti 4Gb
Windows 11 64bit
- Cinsiyet
- Erkek
Merhaba,
Ben bir PHP ile upload sistemi yaptım. Küçük dosyalarda sıkıntı yok ama büyük boyuttaki dosyalarda sıkıntı çıkıyor. Örnek olarak 150 MB'lik bir dosya upload ediyorum %10'a gelince duruyor upload işlemi.
Upload işleminin form sayfası index upload eden sayfa ise upload.php sayfası. Sizce nerede hata yapıyorum? Kendim yapamadım ChatGPT yapamadı gemini yapamadı kaldım böyle.
Upload.php:
Ben bir PHP ile upload sistemi yaptım. Küçük dosyalarda sıkıntı yok ama büyük boyuttaki dosyalarda sıkıntı çıkıyor. Örnek olarak 150 MB'lik bir dosya upload ediyorum %10'a gelince duruyor upload işlemi.
Upload işleminin form sayfası index upload eden sayfa ise upload.php sayfası. Sizce nerede hata yapıyorum? Kendim yapamadım ChatGPT yapamadı gemini yapamadı kaldım böyle.
Upload.php:
PHP:
// Dosya yükleme işlemini gerçekleştir
if (isset($_FILES['file']) && isset($_POST['stock']) && isset($_POST['max_downloads'])) {
$fileName = $_FILES['file']['name'];
$fileTmpName = $_FILES['file']['tmp_name'];
$fileType = $_FILES['file']['type'];
$fileSize = $_FILES['file']['size'];
$fileError = $_FILES['file']['error'];
$stock = $_POST['stock'];
$maxDownloads = $_POST['max_downloads'];
// Dosya yükleme işlemi
if ($fileError === 0) {
// Dosya hedef yolunu belirle
$fileDestination = 'uploads/' . $fileName;
// Dosyayı hedefe taşı
if (move_uploaded_file($fileTmpName, $fileDestination)) {
// Dosya başarıyla yüklendiğinde veritabanına bilgileri kaydet
$sql = "INSERT INTO files (file_name, stock, max_downloads) VALUES ('$fileName', '$stock', '$maxDownloads')";
if ($conn->query($sql) === TRUE) {
// Yeni dosyanın ID'sini al
$fileId = $conn->insert_id;
// Tokenleri oluştur ve veritabanına kaydet
$tokens = [];
for ($i = 0; $i < $stock; $i++) {
$token = bin2hex(random_bytes(16));
$tokens[] = $token;
// Tokenleri veritabanına kaydet
$tokenSql = "INSERT INTO tokens (file_id, token, download_limit) VALUES ('$fileId', '$token', '$maxDownloads')";
if ($conn->query($tokenSql) !== TRUE) {
echo '<div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h5><i class="icon fas fa-ban"></i> Hata!</h5>
Token oluşturma sırasında bir hata oluştu. Tekrar deneyin.
</div>';
exit;
}
}
// Dosyanın indirme linklerini oluştur
$downloadLinksFileContent = "";
foreach ($tokens as $token) {
$downloadLinksFileContent .= $websitedomain . "/download.php?file-name=$fileName&token=$token\n";
}
$tokenFilePath = "tokens/token-$fileName.txt";
file_put_contents($tokenFilePath, $downloadLinksFileContent);
echo '<div class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h5><i class="icon fas fa-check"></i> Başarılı!</h5>Dosya Yükleme Başarılı!
</div>';
} else {
// Veritabanına kaydetme hatası
echo '<div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h5><i class="icon fas fa-ban"></i> Hata!</h5>
Dosya yükleme sırasında bir hata oluştu. Tekrar deneyin.
</div>';
}
} else {
// Dosya taşıma hatası
echo '<div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h5><i class="icon fas fa-ban"></i> Hata!</h5>
Dosya yüklenirken bir hata oluştu. Tekrar deneyin.
</div>';
}
} else {
// Dosya yükleme hatası
echo '<div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h5><i class="icon fas fa-ban"></i> Hata!</h5>
Dosya yüklenirken bir hata oluştu. Tekrar deneyin.
</div>';
}
} else {
// Dosya bilgileri eksik
echo '<div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h5><i class="icon fas fa-ban"></i> Hata!</h5>
Dosya bilgileri eksik. Tekrar deneyin.
</div>';
}
// Veritabanı bağlantısını kapat
$conn->close();
?>