2014-04-01 1 views
0

블렌더에서 사용자가 업로드 한 파일을 열어야합니다 (데이터 검색 및 처리 용).PHP에서 동적 파일 열기

지금까지 $ cmd를 생성하고 exec(); 테스트를 위해 일했지만 실행중인 파일이 항상 미리 정의되어 있으므로 사용자가 업로드 한 파일을 열어 볼 수 없습니다 (C : \ xampp \ htdocs \ test.new \ test.stl).

$cmd = '"C:\Users\DJ LX\Documents\blender.old\blender.exe" C:\xampp\htdocs\test.new\test.stl"'; 

if ((($_FILES["file"]["type"] == "application/netfabb") 
|| ($_FILES["file"]["type"] == "application/sla") 
|| ($_FILES["file"]["type"] == "fileapplication/sla") 
|| ($_FILES["file"]["type"] == "fileapplication/vnd.ms-pki.stl"))) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $file . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 
    exec($cmd); 

$ _FILES 정보를 사용해 보았지만 작동하지 않습니다.

$cmd = "C:\Users\DJ LX\Documents\blender.old\blender.exe" $_FILES["file"]["type"]; 

$cmd = "C:\xampp\htdocs\test.new\upload" . $_FILES["file"]["type"]; 
또한 사용은 $ openfile, 다음 간부 ($ openfile)를 사용하여로 지정 fopen을 시도했지만 오류가 간부의 첫번째 매개 변수() 할 필요가 없다는 표시

끈이어야한다.

$openfile = fopen($_FILES["file"]["type"], "r"); 

if ((($_FILES["file"]["type"] == "application/netfabb") 
|| ($_FILES["file"]["type"] == "application/sla") 
|| ($_FILES["file"]["type"] == "fileapplication/sla") 
|| ($_FILES["file"]["type"] == "fileapplication/vnd.ms-pki.stl"))) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $file . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 
    exec($opefile); 

어쨌든, 내가 업로드 한 파일에서 파일 이름을 파일을 열도록 사용할 수있는 방법에 대한 정말 혼란 스러워요. 어떤 도움이라도 대단히 감사하겠습니다.

답변

0

당신은 아마 $ _FILES [ 'file'] [ 'tmp_name']을 찾고있을 것입니다.

업데이트

파일은 임시 (거의 임의) 이름으로 업로드됩니다. $ _FILES [ 'file'] [ 'tmp_name']으로 알 수 있습니다. 원본 파일의 파일 이름은 $ _FILES [ 'file'] [ 'name']입니다. 귀하의 명령 줄 문자열은 실행 파일과 파일 이름 사이에 공백을 필요로하고 아마 같은 것을 보일 것입니다 : 그것은 또는 따옴표없이 안전 할 수

$cmd = '"C:\Users\DJ LX\Documents\blender.old\blender.exe" ' 
      . escapeshellarg($_FILES["file"]["tmp_name"]); 

을 - 자신을 위해 그것을 확인합니다.

+0

시도했지만 여전히 작동하지 않습니다. –

0

좋습니다. 알았으므로 제안 사항을 파란색으로 제공해 주셨습니다. $ _FILES [ 'file'] [ 'tmp_name']을 가지고 놀고 나면 블렌더가 그것을 열려고 시도 할 수 있었지만 인식 할 수 없기 때문에 (tmp 파일) 작동하지 않았습니다.

그런 다음 $ _FILES [ "file"] [ "type"]이 (가) 스크립트에서 exec ($ cmd)를 스크립트에서 더 아래로 이동했습니다. 업로드 폴더로 이동되었습니다.