2013-10-14 3 views
1

그래서 PHP 폼을 통해 mysql에 파일을 다운로드하는 방법을 모색했다. 이것은 내가 찾은 것입니다 :mysql에 PHP 파일 업로드

www.w3schools.com/php/php_file_upload.asp

그러나 이것은 다른 페이지 대신 MySQL을 업로드입니다. 이제 코드를이 코드로 변경했습니다 :

<form method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file"><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

<?php 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 


if(isset($_POST['submit'])) { 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if($_FILES["file"]["size"] < 20000) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

    if (file_exists("upload/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "upload/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
    } 
?> 

mysql에 업로드하는 방법을 모른다. 나는 그것을했지만 Google에서 나를 도왔던 것을 찾을 수 없습니다. 내 데이터베이스는 다음과 같습니다

는 사람이 내 데이터베이스 테이블에 내 파일을 업로드하는 방법을 나에게 설명 할 수 있습니까?

+3

도움이 될 수 있습니다 http://bytes.com/topic/php/insights/740327-uploading-files-into-mysql-database-using-php –

+0

@ 하임비 감사합니다. 나는 그것을 볼 것이다. 나는 아직도 다른 대답을 기다리고 있습니다. – Loko

+0

이 예제에서 보면 file_get_contents 또는 다른 메소드를 통해 파일을 변수로 읽은 다음 이진 데이터를 BLOB 필드에 삽입합니다. –

답변

1

큰 데이터를 테이블에 저장하려면 큰 blob 데이터가있는 테이블에 대한 쿼리가 매우 느리기 때문에 파일 데이터에 대해서만 별도의 테이블을 만들어야합니다. 예를 들어 열 id (int) 및 데이터 (blob)가있는 crate 테이블 'files' 그리고 params 및 정렬을 사용하여 주 테이블에 쿼리를 만든 다음 ID가 '파일'테이블의 데이터 만 제공합니다 (주 테이블에 열 예를 들어 FILE_ID) 파일 이름 :

<?php 
// Allowed extension for upload 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 

$link = mysqli_connect("myhost", "myuser", "mypassw", "mybd") or die("Error " . mysqli_error($link)); 

if (isset($_POST['submit'])) { 
    $filename = $_FILES["file"]["name"]; 
    // Get extension with http://www.php.net/manual/en/function.pathinfo.php 
    $extension = pathinfo($filename, PATHINFO_EXTENSION); 
    // Check file size in bytes and for allowed extensions 
    if ($_FILES["file"]["size"] < 20000 && in_array($extension, $allowedExts)) { 
     if ($_FILES["file"]["error"] > 0) { 
      echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
     } else { 
      // Get file size 
      $size = $_FILES["file"]["size"]; 
      // Read file to var 
      $file_data = file_get_contents($_FILES["file"]["tmp_name"]); 
      // Prepare sql 
      $prepare = mysqli_prepare($link, 'INSERT INTO yourtable(`name`,`type`,`size`,`content`) VALUES(?,?,?,?)'); 
      // bind variables for replace ? in query with types 
      // s - string, i - integer, b- blob (for file data), d - for double 
      mysqli_stmt_bind_param($prepare, 'ssib', $filename, $extension, $size, $file_data); 
      // execute query 
      mysqli_stmt_execute($prepare); 
     } 
    } else { 
     echo "Invalid file"; 
    } 
} 
?> 
+0

약간의 설명을 통해 답을 향상시킬 수 있습니다 :) – Federico

+0

잘못된 것입니다 : ** $ file_data = file_get_contents ($ _ FILES [ "file"] [ "name"]); ** "tmp_name"을 읽고 "이름"이 아님 –

+0

O_o ​​예 내 오류, 고정 된 $ $) –