2011-03-27 9 views
10

최종 사용자가 업로드 된 파일 (특히 .csv)의 레코드로 데이터베이스 (MySQL)를 업데이트하는 파일을 업로드 할 수있는 양식 (HTML, PHP)이 있습니다. 그러나 phpscript에서는 파일 이름 만 가져올 수 있으며 파일의 전체 경로는 알 수 없습니다. 이 이유 때문에 fopen()이 실패합니다. 아무도 내가 완전한 경로를 찾는 데 어떻게 일할 수 있는지 알려주시겠습니까?업로드 된 파일의 전체 PATH 가져 오기 -

HTML 코드 :

<html> 
<head> 
</head> 
<body> 
<form method="POST" action="upload.php" enctype="multipart/form-data"> 
    <p>File to upload : <input type ="file" name = "UploadFileName"></p><br /> 
    <input type = "submit" name = "Submit" value = "Press THIS to upload"> 
</form> 
</body> 
</html> 

PHP 스크립트 :

<?php 
    ..... 
...... 
    $handle = fopen($_FILES["UploadFileName"]["name"], "r"); # fopen(test.csv) [function.fopen]: failed to open stream: No such file or directory 
?> 
+0

유용한 정보입니다. –

답변

25

name클라이언트 측에 파일 이름을 의미합니다. 서버 측에 (전체 경로 포함) 파일 이름을 얻으려면, 당신은 tmp_name를 사용해야합니다 :

$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r'); 
3

는 다음 코드를 사용하여,

$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r'); 
3
$target='uploads/'.basename($_FILES['UploadFileName']['name']); 

if(move_uploaded_file($_FILES['UploadFileName']['tmp_name'],$target)) { 

    //Insert into your db 

    $fp = fopen($target, "r"); 
} 
2

내가 이렇게 썼다 :

$filePath = realpath($_FILES["file"]["tmp_name"]); 

이렇게하면 PHP에서 업로드 된 파일의 전체 경로를 얻을 수 있습니다. 당신은 파일 다운로드 0 바이트 문제를 발견하면, 단지 $적인 filePath는 절대 경로 그냥 핸들을 제출하지 제출하는 것이

header("Content-Length: ".filesize($filePath)); 

처럼이 컨텐츠 아이폰에 라인을 수정합니다.

관련 문제