2009-05-29 2 views
1

미리 정의 된 레이아웃이없는 .csv 파일을 받아 들일 필요가있는 페이지가 있습니다. 즉, 사용자는 각 열에있는 데이터의 종류를 선택합니다.업로드 된 파일을 여러 페이지에 보관하십시오.

지금 업로드 파일 형식은 나를 업로드 한 파일에 액세스 할 수있는 .php 스크립트로 보냅니다. 그것을 읽고 사용자가 각 열에 범주를 할당 할 수있게합니다. 다음 단계는 .csv 파일의 데이터를 데이터베이스에 복사하는 것이지만 임시 디렉토리에서 파일이 삭제되지 않도록하는 방법을 잘 모르겠습니다. 실제 복사를 수행하는 다음 페이지에서도 필요합니다. . 또한 서버의 다른 위치로 파일을 복사하는 데 관심이 없으며 낭비처럼 보입니다. 동시성을 허용하면서 제대로 수행하는 번거 로움이 있습니다.

파일이 삭제되지 않도록하려면 어떻게해야합니까? 또는이 문제의 더 나은 해결책은 무엇입니까?

답변

3

글쎄,이 업로드 된 파일을 이동하지 않고 유지할 수 있는지 모르겠습니다.

개인적으로, 나는 thusly 히 그것을 구현하는 것이 :

//assuming it hasn't already been started... 
session_start(); 

$filepath = $_SESSION['uploaded_filepath']; 

// do whatever you need to with the file 

unlink($filepath); 

unset($_SESSION['uploaded_filepath']); 

session_write_close(); 
: 당신이 더 많은 처리를 수행 할 때, 두 번째 페이지에서

//assuming it hasn't already been started... 
session_start(); 

//generate a unique filepath 
$filepath = PATH_TO_THE_DIR . "/" . time() . 
"_" . md5_file($_FILES['formelement']['tmp_name']) . ".csv"; 

//move the uploaded file 
move_uploaded_file($_FILES['formelement']['tmp_name'], $filepath); 

//do whatever you need with the file, now at $filepath 

//now store the filepath in the session: 
$_SESSION['uploaded_filepath'] = $filepath; 

session_write_close(); 

: 업로드 된 파일을받는 페이지에서

괜찮습니다. 분명히 PATH_TO_THE_DIR 상수에 대한 사용 권한을 확인해야합니다. 이는 어딘가의 디렉토리 일 것입니다.

+0

저는 이것이 답이라고 생각했습니다. 오 잘. 예제를 제시했기 때문에 선택되었습니다. –

2

move_uploaded_file을 사용해야합니다. 다른 위치로 복사하는 방법은 없습니다. 그리고 이것에 대해서도 걱정할 필요가 없습니다. 왜냐하면 이런 것들은 어떤 파일 시스템에서도 문제가되지 않기 때문입니다. 동시성에 관해서는이 문제에 어떻게 대처할 수 있는지 보지 못했습니다. 수백만 PHP 응용 프로그램을 잘 :-)

관련 문제