2012-07-11 3 views
0

나는 input type = "file", name = "pdf_statement"인 간단한 입력 폼을 가지고 있습니다.PHP는 blob을 즉시 업로드합니다.

나는 내용을 업로드하고 즉시 데이터베이스에 삽입 할 수 있기를 원합니다. 이것은 테스트 파일 일 뿐이므로 보안에 대해 걱정하지 않습니다 (일단 기능이 추가되면 추가 할 것입니다).

나는 http://php.net/manual/en/function.stream-get-contents.php을 읽었지만 제대로 작동하지 않습니다. 오류가 발생했습니다 fopen()은 매개 변수 1이 문자열이고 배열이이고 * stream_get_contents()가 매개 변수 1이 리소스가 될 것으로 예상하고 부울 *이 올 것으로 예상합니다.

블라인드하게 눈에 띄지 만 유감스럽게도 내가 뭘 잘못하고 있는지 알 수없는 사람에게는 유감입니다.

<?php 

include('session.php'); 

$provider  =$_POST['provider_id']; 
$trd_period =$_POST['trading_period_month']; 
$pdf_statement =stream_get_contents(fopen($_FILES['pdf_statement'], 'r')); 

$sql_qry="update rd_provider_statement 
      set (pdf_statment='".$pdf_statement."', creation_user_id='SCO') 
      where provider='".$provider."' and trading_period_month='".$trd_period."'"; 
$sql_err_no=sql_select($sql_qry,$sql_res,$sql_row_count,$sql_err,$sql_uerr);  

?> 
+0

$ _FILES [ 'pdf_statement'] [ 'tmp_name']에 액세스하려는 경우 – gunnx

+0

데이터베이스 공간은 일반 디스크보다 많은 환경에서 더 비싼 리소스입니다. 왜 PDF를 파일 시스템에 저장하고 데이터베이스에 포인터를 저장하지 않습니까? –

답변

1

당신은 바이너리 모드로 파일을 열어야합니다 :

fopen($_FILES['pdf_statement']['tmp_name'], 'rb') 

아니면 그냥 대신 file_get_contents()를 사용할 수 있습니다.

$pdf_statement = file_get_contents($_FILES['pdf_statement']['tmp_name']); 

입력 내용을 살균해야합니다. mysql_real_escape_string()

+0

둘 다 감사합니다. $ pdf_statement를 echo하면 글자 수를 늘릴 수 있습니다. 그래서 제대로 읽히고 있음을 알고 있습니다. 그러나 열이 테이블에서 업데이트되고 있지 않습니까? – user1488434

+0

오류 변수를 검사하여 쿼리에 오류가 있는지 확인 했습니까? – Ruel

+0

SQL 구문에 오류가 있습니다. 오른쪽 구문을 사용하는 MySQL 서버 버전에 해당하는 설명서를 확인하여 '????????????????????????????????????????????????????????????????????????????? ? X - ???????????????????????????????????????????????????????????????????????????????????????????? 문자열이 처리됩니다. 메신저 설정 pdf_statement = ' ". $ pdf_statement."' – user1488434

0

$_FILES['pdf_statement']은 배열이며 fopen에 전달할 수있는 파일 경로가 포함 된 문자열이 아닙니다. 또한 파일을 2 진 모드로 열어야합니다.

$pdf_statement = stream_get_contents(fopen($_FILES['pdf_statement']['tmp_name'], 'rb')); 

데이터베이스를 사용하여 파일 업로드를 저장하는 것은 좋은 생각이 아닙니다. 파일 시스템은이 정보를 제공하는 훨씬 좋은 장소입니다.

관련 문제