php 이미지 - Base64로 인코딩 된 파일을 Base64로 인코딩 한 다음 데이터베이스에 저장




base64란 알고리즘 (2)

나는 64 바이트 파일을 인코딩 한 후 MySQL 데이터베이스의 BLOB 타입 컬럼에 저장하려고한다.

나는 PHP 함수 base64_encode에서 파일 변수를 사용해 보았습니다. 그러나 이것은 효과가없는 것 같습니다.

우리가 이것을 할 수있는 방법이 있습니까?

그 이유는 moveuploaded 파일을 폴더에 사용하고 싶지 않기 때문입니다.

고맙습니다.


Answers

@Sjoerd와 @zerkms가 올바르게 지적 했으므로이 작업을 수행 할 필요가 없습니다. blob 열을 원시 이진 데이터를 저장하는 데 사용하므로 Base64 프로세스를 건너 뛰고 파일의 원시 데이터를 삽입 할 수 있습니다.

데이터베이스에 이미지를 저장하려면 (개인적으로 내가하고 싶지는 않음) 원시 데이터를 저장하는 것이 더 좋습니다 - 데이터를 인코딩하는 Base64는 더 크게 만들고 이전에 반드시 디코딩해야한다는 것을 의미합니다 이미지가 렌더링되어 처리 오버 헤드가 추가됩니다.

이것은 원시 이진 데이터를 삽입하는 방법입니다 (MySQL 확장을 가정 할 때).

$data = file_get_contents($_FILES['name_of_control']['tmp_name']);
$data = mysql_real_escape_string($data);

$query = "
  INSERT INTO table
    (`blob_column`)
  VALUES
    ('$data')
";

mysql_query($query);

Base64로 인코딩하려면 (실제로 varchar에 저장할 수 있음) base64_encode() 호출을 추가하기 만하면됩니다.

$data = file_get_contents($_FILES['name_of_control']['tmp_name']);
$data = base64_encode($data);

// There is an argument that this is unnecessary with base64 encoded data, but
// better safe than sorry :)
$data = mysql_real_escape_string($data);

$query = "
  INSERT INTO table
    (`varchar_column`)
  VALUES
    ('$data')
";

mysql_query($query);

내 코드는

CityProductTemp::updateOrCreate(
    [
        'city_id' => $city_id,
        'product_id' => $product->product_id
    ],
    [
        'mrp' => $mrp,
        'sale_price' => $sale_price,
        'in_offer' => $in_offer,
        'is_featured' => $is_featured,
        'sort_number' => $sort_number
    ]
);

where 절에서 알 수없는 열 id

SQL: UPDATE city_product_temp SET mrp = 66, is_featured = 1, 
     updated_at = 2017-09-15 15:23:17, in_offer = 0 WHERE `id` IS null






php