2013-09-30 17 views
5

Duvar kağıtları için bir site oluşturmaya çalışıyoruz, bu yüzden bir şekilde büyük dosyalar (2mb-5mb) olacak, bu yüzden görüntüleri veritabanında değil, yalnızca veritabanındaki yollarda saklamak zorundayız. Bu nedenle, nasıl yapacağınıza dair bazı fikirler verebilirseniz (şu an için bildiğimiz yöntem, yükleme işlevi olan bir PHP betiği oluşturmak ve başka önerilerde bulunmayacak şekilde, yüklenen PC'den görüntüleri manuel olarak seçmektir). Öğreticiler çok takdir edilecektir. Çok teşekkürler!Görüntüleri dosya sistemine (internet üzerinden) nasıl depolar ve yolları veritabanına nasıl kaydederim?

Bu, yöneticilerin kullanıcılar için değil resim eklemeleri içindir. Not: herhangi bir betik geliştirmedik, bu yüzden sizden bu konuda neler kullanabileceğimiz konusunda fikir almak için, eğer hiçbiri tahmin edemediğimizde sadece php betiğine gideceğiz.

+1

<form action="PHP_FILE_PATH.php" method="post" enctype="multipart/form-data"> <input type="file" name="image" /> <input type="submit" name="submit" value="Upload" /> </form> 

hiçbir şey denediniz mi? Eğiticiler için mi çalışıyorsunuz? Bazı satırlar yazılıyor mu? Scaffolds oluşturmaya çalışın, böylece uygun bir çözüm bulmanızda yardımcı olabiliriz. –

+0

Aynen önerdiğin gibi yapmalısın. Sorunlarla karşılaşırsanız, geri dönüp yardım isteyin ve lütfen bir kod örneği ekleyin. – Sven

+0

Yani dosyaları yüklemek için en iyi yöntem mi? –

cevap

4

Formunuz PHP Bölüm

<?php 
if($_FILES['image']['name']) 
{ 
    $save_path="FOLDER_PATH_TO_SAVE_UPLOADED_IMAGE"; // Folder where you wanna move the file. 
    $myname = strtolower($_FILES['image']['tmp_name']); //You are renaming the file here 
    move_uploaded_file($_FILES['image']['tmp_name'], $save_path.$myname); // Move the uploaded file to the desired folder 
} 

$inser_into_db="INSERT INTO `database`.`table` (`folder_name`, `file_name`) VALUES('$save_path', '$myname'))"; 

?> 
+0

. Teşekkürler! –

+2

Ve @Paul burada başka bir cevapta dediği gibi, her bir dosya için kendi adını oluşturduğunuzdan emin olun, örneğin mantıksal olarak örneğin PHP mikroişlemi ve '$ myname' değişkeninde kullanın. Buraya yazdığım cevap sadece basit bir örnektir. –

6

Yüklenen her bir dosya için bir UUID oluşturun ve bunu diskteki dosya adı için kullanın. Bu, çarpışmaları önler, dosya isimlerini ve yol geçişi zayıf noktalarını engeller.

(1, "Green field", "0D729DCD-5116-4480-81CE-90A0380B557A.png") gibi değerlere sahip (id, description, filename) gibi bir tablonuz olacak.

Daha sonra, bir klasörde çok fazla dosya olması sorununu ortadan kaldırmak istersiniz - bir çok FS için dosya sistemi sınırlamasına çarpacaksınız.

Bu soruna geçici bir çözüm bulmak için, dosya adının ilk birkaç harfini temel alarak dizinler oluşturun. 0D729DCD-5116-4480-81CE-90A0380B557A.png için /0/D/7/0D729DCD-5116-4480-81CE-90A0380B557A.png'da saklarsınız.

+0

Çok teşekkürler @Paul, sanırım ay gibi klasör isimlerini veya ilk harf yerine bir şey kullanabilirsiniz, ama büyük öneri. Aslında –

İlgili konular