2012-04-13 4 views
0

아찔함에서 w3schools 업로드 버전으로 시도했지만 아무 것도 시도하지 않았습니다.PHP 업로드 파일, MySQL에 파일 URL을 저장

<input name="event_image" type="file" /> 

내 _eventscreate.php 스크립트가 한 번 업로드 내가 URL로 내 _gallery/디렉토리에 파일을 업로드하는 방법 하시겠어요했습니다

내 _events.php 스크립트는 파일 정보를 얻기 위해 다음과 같은 포함 내 데이터베이스에 저장할 파일에 저장합니다 (SQL 쿼리 참조).

<?php // Get Event ID 
    $location=$_GET['location']; 

    // Get values from form 
    $event_name=$_POST['event_name']; 
    $event_description=$_POST['event_description']; 
    $event_date=$_POST['event_date']; 
    $event_time=$_POST['event_time']; 
    $event_cost=$_POST['event_cost']; 
    $event_image=$_POST['event_image']; 

    // Connection to MySQL Database. 
    include ('_includes/_dbconnection.php'); 
    include ('_includes/_dbopen.php'); 

    // Update Event using Event ID. 

    $sql="INSERT INTO b_events (ename, edescription, edate, etime, ecost, locationid, eimage)VALUES('$event_name', '$event_description', '$event_date', '$event_time', '$event_cost', '$location', '$event_image')"; 
    $result=mysql_query($sql); 

    if($result){ 
    header('Location: _events.php'); 
    } 

    else { 
    header('Location: _home.php'); 
    } 

?> 

는 URL에 의해

+0

아약스 코드를 표시 할 수 있습니까? –

+0

정확하게 $ _FILES http://php.net/manual/en/reserved.variables.files.php를 사용해야 할 수도 있습니다. 아약스에서 처리 한 코드 블록입니까? – encodes

답변

0

, 당신이 파일이 아닌 원격 소스 위치의 로컬 복사본에 대한 경로를 의미 가정거야 제발 도와주세요. 내가 잘못 생각한 경우 대답은 아마도 "파일 업로드를 사용하지 마십시오"입니다.

PHP 스크립트가 실행되면 (특히 이상한 점을 제외하고는) 파일 업로드가 완료되고 파일 정보 (이름, 크기 등)가 $ _FILE에 저장되고 있음을 의미합니다. 경로를 저장하거나 사용하기 전에 (또는 실제로 _gallery로 이동) 경로를 설정해야합니다. 업로드 된 파일은 $ _FILES [fileID] [ "tmp_name"]의 경로에 저장됩니다. 그러나이 경로에서 직접 작업 할 수는 없습니다 (예 : 이동 또는 읽기 작업) (적어도 Apache2에서는 불가능 함).

먼저 PHP 인 비트 메소드를 통해 원하는 위치에 파일을 작성해야합니다. 예를 들어 :

move_uploaded_file($_FILES[fileID]["tmp_name"], "_gallery/".$_FILES[fileID]["name"]); 

하는 시점 후, 파일은 당신이 당신이 원하는대로로하는 것입니다, 그리고 주소 ("_gallery이 /".$_ FILES가 [FileID에] 위의 예에서 ["이름 "])입니다입니다 또 다른 PHP 문자열.

URL로 해당 파일의 외부 방향 주소 (다른 사람이 파일에 접근하기 위해 브라우저에 입력하는 주소)를 의미하는 경우 직접 작성해야합니다. 파일이 웹 루트 내에있는 가장 간단한 경우에는 방금 작성한 파일의 상대 경로를 연결하는 것입니다. 하드 코드 된 기본 URL을 사용하지 않으려면 $_SERVER의 값이 유용 할 수 있습니다.

+0

볼 수 내 양식 POST 어디 내가 "" ", 스크립트를 제출할 때 사용하는 이미지를 선택할 수 있습니다 _eventcreate.php, 이벤트는 PHP (동일한 도메인) 파일을 누른 다음 업로드 시작, DB에 파일의 URL을 저장 생성해야합니다. 귀하의 코드를 사용하십시오. – Boldie

+0

아하이 봐요. 그럼 내가 도울 수 있는지 잘 모르겠다. 불행히도 나는 이것을하기 위해 type = "file"입력을 사용할 수 있다고 생각하지 않는다; 파일 업로드는 _eventcreate.php가 호출 될 때까지 이미 수행 된 것입니다. 이 작업을 수행하려면 클라이언트 측에서 꽤 영리한 작업을 수행해야 할 것입니다. JQuery 플러그인이 있다고 생각합니다. 그러나 내 지식은 여기까지입니다. – Bhau

0

$ event_image = $ _POST [ 'event_image']를 사용할 수 없습니다. 업로드 된 파일을 가져옵니다.

는 업로드 된 파일에 액세스하려면, 당신은 $ 이름의 이름입니다 $ _FILES [$ 이름]을 사용할 필요가 :

또한
<input type="file" name="something" /> 

양식이 방법 = "POST"와 PHP 버전이 있는지 확인 = "multipart/form-data".

$ _FILES [$ 이름] 자체 키 배열 (결합 배열) 될 것이다

  • 이름
  • 크기
  • tmp_name
  • 오류

파일을 성공적으로 업로드 한 후 ($ _FILES [$ name] [ 'error']로 테스트) == UPLOAD_ERR_OK), 원하는 위치로 이동해야합니다.

파일을 이동 한 후 (move_uploaded_file()을 사용하여) 이름을 가져 와서 $ event_image에 값을 할당 할 수 있습니다. 그런 다음 데이터베이스에 저장하십시오.

자세한 내용은 read this.