php kullanarak resim upload

3 Cevap php

Ben resim yüklemek için bu kod kullanılır. Ben stackoverflow bu kod var. Hala resim yüklemek mümkün duyuyorum. Ben tabloyu yaptım. Tablo ayarları 2 db bağlantısı ayarlarını değiştirdim ama ben oluşturulan tablo özellikleri, doğru olup olmadığından emin değilim.

<html>
<head><title>Store Some Binary File to a DB</title></head>
<body>

<?php
if ($submit) {
    $conn = mysql_connect("localhost", "your_username", "your_password") 
        or die ("Error connecting to database.");

    mysql_select_db("your_database", $conn) 
        or die ("error connecting to database.");

    $data = addslashes(file_get_contents($_FILES['form_data']['tmp_name'])


    $result = mysql_query ("INSERT INTO your_table ".
         "(description,bin_data,filename,filesize,filetype) ".
         "VALUES ('$form_description','$data','$form_data_name',".
         "'$form_data_size','$form_data_type')",
         $conn);

    $id = mysql_insert_id();
    print "<p>This file has the following Database ID: <b>$id</b>";

    mysql_close();

} else {
?>

    <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
    File Description:<br>
    <input type="text" name="form_description"  size="40">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
    <br>File to upload/store in database:<br>
    <input type="file" name="form_data"  size="40">
    <p><input type="submit" name="submit" value="submit">
    </form>

<?php

}

?>

</body>
</html>

Ayrıca, veritabanından görüntü alınıyor ve bir sayfada gösteriyorum bana yardım.

u thiis şimdi çalışacaktır düşünüyorsunuz?

3 Cevap

Bkz http://www.php.net/manual/en/features.file-upload.php

Bunun yerine yüklenen dosyanın dosya adı olarak $ form_data kullanarak, try $_FILES['form_data']['tmp_name']

Ayrıca oldukça beceriksiz yerini alabilir

fread(fopen($form_data, "r"), filesize($form_data))

ile

file_get_contents($_FILES['form_data']['tmp_name'])

Ben doğrudan veritabanında ikili görüntü dosyası saklamak tavsiye etmem. Bunun yerine, diskte saklamak ve DB dosya işaretçisi (dosya dizin + dosya adı) saklayın.

Dosya sistemi görüntüleri depolamak ile sorun aşağı veritabanı çoğaltması gelir. Ayrıca bazen bazı sunucular uzak olabilir, özellikle veritabanı çoğaltması daha zor olabilir dosya sistemi çoğaltma gerekir.

(Gidecekseniz kod Göremediğim ya da 'tehlikeli' üzerinde küresellerle kayıt sürece) senin $ form_ değişkenlerin hiçbiri ayarlanır. Ayrıca başka bir komut dosyası, SQL enjeksiyon eğilimli, İSTEK değerler kabul herhangi bir sorgu üzerinde addslashes (veya mysql_real_escape_string) isteyeceksiniz.

Sen ister:

$form_description = isset($_POST['form_description']) ? $_POST['form_description'] : false;

Diğer değişkenler bile nakledilen değildir. Herhangi bir HTML ve PHP biliyor musunuz? bu sorunu çözmek için kolay ama ben sizin için bu yazmıyorum!

Ne gerek komut dosyası ne üretir bazı geribildirim .. Eğer yaparak görüntüyü geri alabilirsiniz:

$result = mysql_query ("SELECT `bin_data` FROM `your_table` WHERE `id` = ".$id, $conn);

Sonra (dosyalar diziden belirlenen ilgili tip ile içerik türünü değiştirme) yapabilirim Örneğin:

$result_data = mysql_fetch_array($result, MYSQL_ASSOC);
header('Content-Type: image/jpg');
echo $result_data['bin_data'];
exit;

Bunu komut için biraz daha fazla iş yapmak gerekir, ve bu HTML, PHP ve MySQL bilgisi gerektirir.