2012-04-28 3 views
0

기본 클라이언트 프로파일에 사용되는 기존 mySQL 데이터베이스가 있습니다. 각 레코드에 그림을 추가해야합니다.양식을 통해 기존 mySQL에 사진을 업로드하는 방법

레코드를 만들 수있는 입력 및 텍스트 영역이있는 양식이 있습니다. 사진 필드가 얼룩인지는 알고 있지만 기존 양식에 업로드하는 방법은 무엇입니까? 어디서부터 시작해야할까요?

jquery를 사용하면 더 쉽게 수행 할 수 있습니까?

감사합니다.

에릭

+0

하여 모든 이미지를 표시 할 수 있습니다. 이것이 기본 방법입니다. Ajax *는 파일 전송에 * [1] 사용할 수 없습니다. MySQL을 사용하고있어서 다행입니다 만, 자바 스크립트는 MySQL과 직접 통신하지 않습니다 (addons없이). 내 요점은 : 당신은 서버 측 언어가 필요합니다. PHP를 사용하고 있습니까? '[1] -이 기능을 구현하기 위해 해킹 할 수있는 방법이 있지만 현재로서는 지원할 기본 핵심 방법이 없습니다. " – Ohgodwhy

+0

예, PHP를 사용하고 있습니다. Insert.php 스크립트를 사용하여 양식으로 레코드를 삽입하려고합니다. 사진 업로드를 기존 스크립트에 통합 할 수 있습니까? – Erik

답변

1

나는 더 좋은 방법은 이미지를 저장하기 위해 MySQL의 DB에 BLOB를 사용하는 것보다 각 프로파일에 대한 이미지를 업로드하는 것입니다 생각합니다. 파일을 업로드 할 때 copy 또는 move_uploaded_file PHP 함수를 확인할 수 있습니다. 필요한 경우 나중에 이미지의 크기를 조정할 수 있습니다. pictute 필드를 blob에서 varchar로 변경해야합니다.

감사합니다.

+0

업로드 프로세스에 javascript 또는 jquery가 필요합니까? 어떻게 든 insert.php 스크립트를 실행하기 전에 파일을 준비해야합니다. – Erik

+0

이미지 필드가 필수 일 경우 항상 javascript/jquery 유효성 검사를 사용할 수 있습니다. 당신은 항상 당신이 페이지를 제출하는 이미지 이름을 얻을 것이다. 그런 다음 해당 이름을 db에 삽입하십시오. –

0

성능 향상을 위해 사진을 blob 형식으로 mySql에 업로드하지 않습니다. 대신 그림의 경로를 mySql에 업로드하고 업로드 클래스 (예 : http://www.verot.net/php_class_upload.htm)를 사용하여 그림을 서버에 업로드합니다. 기존 입력을 추가하고 양식 태그 끝 (form enctype = "multipart/form-data"method = "post")에 "enctype ="multipart/form-data ""를 추가하고 클래스를 구현 한 다음 POST에서 유효성 검사를 통해 사용자가 파일을 추가하여 데이터베이스에 성공적으로 업데이트되었는지 확인합니다.

PHP :

if(isset($_POST['upload'])) 
{ 
include_once('class.upload.php'); 
if($_FILES['photo']['size'][0] != 0) //check to see if photo is empty{ 

    //place existing code for data upload here but add photo filepath here 

    $handle = new Upload($file); 
    if ($handle->uploaded) { //if upload was successful 
     $handle->file_new_name_body = $file['name']; 
     $handle->Process("./photos/"); 
    } 
} 

HTML :

기존 사진에 대한
<form name="form" id="form" action="form.php" enctype="multipart/form-data" method="post"> 
<input type="file" id="photo" name="photo" accept="gif|jpg|jpeg|png"/>    
<button type="submit" class="button" name="upload" id="upload">Upload</button> 

, 단지 default.png으로 자신의 프로필 사진을 가지고 위와 같은 일을 업데이트 형태로 직접. 잘되어야한다.

+0

여기에 MySQL에서 그림을 저장하지 않아서 어떤 보안 위험을 피할 수 있습니까? – Lock

+0

나는 보안 문제가 아니라 성능 문제를 의미했습니다. – OneSneakyMofo

1

은 내가하는 일은 다음 image_id라는 칼럼에사용자라는 테이블과 같은 다른 테이블이 images_users라는이있는 열 id, user_idfile. 나는 사용자가 자신의 이미지를 업로드 할 수있는 PHP 양식이 있습니다. 양식은 파일 이름 (예 : mypicture.jpg이지만 확장자는 그대로 유지)의 이름을 images_users 테이블의 다음 행 ID로 바꿉니다.

$getnewimageid = mysql_query("SELECT id FROM images_users ORDER BY id DESC LIMIT 1", $connection); $rownewimageid = mysql_fetch_assoc($getnewimageid); $new_image_id = $rownewimageid['id']; $new_image_id = ($new_image_id + 1); 

는 형태의 파일 확장자를 결정하고 $new_image_file = "$new_image_id.$extension"

설정 그래서 파일이 $의 new_image_id.jpg (예를 mypicture.jpg에서 이름이 변경됩니다 : (102).jpg);

그런 다음 양식이 MySQL의 쿼리 이미지를 저장하기 위해 않습니다 (나는 실제로 그것을 수행하는 방법, 난 그냥 시작하는 방법을 설명하기 위해 노력하고있어에 대한 설명을하지 압니다) 이미지를 할당 사용자에게

INSERT INTO images_users (id, user_id, file) VALUES ($new_image_id, $user_id, $new_file_name) 

UPDATE users SET image_id = $new_image_id 

그런 다음 나중에 쉽게 특정 사용자에게 보여주기 위해 어떤 파일 refence 수 있습니다. 사용자는 images_users 테이블에서 user_id = 사용자 ID 인 여러 행을 사용하여 여러 이미지를 가질 수도 있습니다. 이미지를 업로드 할 경우 당신은`당신`<입력 유형 = "파일"> 사용해야

SELECT * FROM images_users WHERE user_id = $user_id 

관련 문제