PHP и Javascript Canvas [дубликат]

используйте следующую конфигурацию:

  -startup plugins / org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar --launcher.library plugins / org.eclipse.equinox.  launcher.win32.win32.x86_64_1.1.200.v20130807-1835 -product org.springsource.ggts.ide --launcher.defaultAction openFile --launcher.XXMaxPermSize 256M -vm C: \ Program Files \ Java \ jdk1.7.0_51 \ jre  \ bin \ javaw.exe -vmargs -Dorg.eclipse.swt.browser.IEVersion = 10001 -Dgrails.console.enable.interactive = false -Dgrails.console.enable.terminal = false -Djline.terminal = jline.UnsupportedTerminal -Dgrails  .console.class = grails.build.logging.GrailsEclipseConsole -Dosgi.requiredJavaVersion = 1.6 -Xms40m -Xmx768m -XX: MaxPermSize = 256m -Dorg.eclipse.swt.browser.IEVersion = 10001  
19
задан NoobEditor 5 January 2014 в 08:49
поделиться

4 ответа

Во-первых, вы должны проверить, является ли ваш столбец изображения типом BLOB!

Я ничего не знаю о вашей таблице SQL, но если я попытаюсь сделать свой собственный пример.

Мы получили поля id (int), image (blob) и image_name (varchar (64 )).

Таким образом, код должен выглядеть так (предположим, что идентификатор всегда «1», и давайте использовать этот mysql_query):

$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence!
$image_name = addslashes($_FILES['image']['name']);
$sql = "INSERT INTO `product_images` (`id`, `image`, `image_name`) VALUES ('1', '{$image}', '{$image_name}')";
if (!mysql_query($sql)) { // Error handling
    echo "Something went wrong! :("; 
}

Вы делаете это неправильно во многих отношениях , Не используйте функции mysql - они устарели! Используйте PDO или MySQLi . Вы также должны подумать о сохранении местоположений файлов на диске. Использование MySQL для хранения изображений считается Bad Idea ™. Обработка таблицы SQL с большими данными, например изображениями, может быть проблематичным.

Также ваша форма HTML не соответствует стандартам. Он должен выглядеть так:

<form action="insert_product.php" method="POST" enctype="multipart/form-data">
    <label>File: </label><input type="file" name="image" />
    <input type="submit" />
</form>

Sidenote:

При работе с файлами и их хранении в виде BLOB данные должны быть экранированы с помощью mysql_real_escape_string() , в противном случае это приведет к синтаксической ошибке.

37
ответ дан Funk Forty Niner 16 August 2018 в 05:27
поделиться
  • 1
    его не работает. Определенная переменная: _FILE и file_get_contents (): имя файла не может быть пустым. – SANDEEP 6 May 2014 в 11:12
  • 2
    @SANDEEP: Я исправил это. – Wiktor Mociun 6 May 2014 в 11:38
  • 3
    Чтобы быть в безопасности от SQL Injection, я бы использовал mysqli_real_escape_string или эквивалент вместо addlashes. Лучший способ сделать это - использовать подготовленные заявления PDO. – MTJ 26 November 2014 в 08:28
  • 4
    Ты прав. Это всего лишь пример кода. – Wiktor Mociun 26 November 2014 в 14:47
  • 5
    Я пришел к этому Q & amp; A из другого вопроса, заданного сегодня. При работе с файлами и хранении в качестве BLOB данные должны быть экранированы с помощью mysql_real_escape_string(), в противном случае будет приводить к синтаксической ошибке. Это не просто «безопасно», это потому, что это нужно сделать. – Funk Forty Niner 17 May 2015 в 23:50

Как вставить в DB?

<html>
    <head>
        <title>Uploads</title>
    </head>
    <body>
        <input type="file" name="file_array[]"/>
        <input type="file" name="file_array[]"/>
        <input type="file" name="file_array[]"/>
        <input type="submit" name="submit"/>
    </body>
</html>

<?php
    if(isset($_FILES['file_array']))
    {
        $name_array = $_FILES['file_array']['name'];
        $tmp_name_array = $_FILES['file_array']['tmp_name'];
        $type_array = $_FILES['file_array']['type'];
      $size_array = $_FILES['file_array']['size'];
        $error_array = $_FILES['file_array']['error'];
        $dir = "slideshow";

        for($i = 0; $i<count($tmp_name_array); $i++)
        {
            if(move_uploaded_file($tmp_name_array,"slideshow/".$name_array))
            {
                echo $name_array[$i]."Upload is complete<br>";

            }  else {
                echo"Move_uploaded_file function failed for".$name_array[$i]."<br>";
            }
        }
    }
?>
-1
ответ дан Jeeped 16 August 2018 в 05:27
поделиться
First, you should not try to store the image in the database. Because this is not the right method to do. IF you want to then code is.

   <?php
   include("config.php");

  if(isset($_POST['but_upload'])){

   $name = $_FILES['file']['name'];
   $target_dir = "upload/";
   $target_file = $target_dir . basename($_FILES["file"]["name"]);

   // Select file type
   $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

   // Valid file extensions
   $extensions_arr = array("jpg","jpeg","png","gif");

   // Check extension
   if( in_array($imageFileType,$extensions_arr) ){

    // Convert to base64 
    $image_base64 = base64_encode(file_get_contents($_FILES['file']['tmp_name']) );
    $image = 'data:image/'.$imageFileType.';base64,'.$image_base64;
    // Insert record
    $query = "insert into images(image) values('".$image."')";
    mysqli_query($con,$query);

    // Upload file
    move_uploaded_file($_FILES['file']['tmp_name'],$target_dir.$name);
   }

  }
  ?>

  <form method="post" action="" enctype='multipart/form-data'>
    <input type='file' name='file' />
    <input type='submit' value='Save name' name='but_upload'>
  </form>

Для получения
 $sql = "select image from images where id=1";
 $result = mysqli_query($con,$sql);
 $row = mysqli_fetch_array($result);

 $image_src2 = $row['image'];

 ?>
 <img src='<?php echo $image_src; ?>' >
2
ответ дан Pooja Khatri 16 August 2018 в 05:27
поделиться

Еще несколько деталей:

  • Добавить поле mysql

`image` blob

  • Получить данные с изображения

$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));

  • Вставить данные изображения в db

$sql = "INSERT INTO `product_images` (`id`, `image`) VALUES ('1', '{$image}')";

  • Показать изображение в сети

<img src="data:image/png;base64,'.base64_encode($row['image']).'">

  • Конец
18
ответ дан Sean 16 August 2018 в 05:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: