开发者

File Upload not in /tmp

This sounds like a stupid question but, after uploading a file the file isnt in the location php said it would be.

First the simple test page:

<html><body> 
<h1><?=$_FILES['imgup']['tmp_name'];?></h1>
<?
        print_r($_FILES);
?>
<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="file" name="imgup" id="imgup">
<input type="submit">
</form>
</body></html>

Now, the print_r in plain text:

Array ( [imgup] => Array ( [name] => ace.jpg [type] => image/jpeg [tmp_name] => /tmp/phpEdfBjs [error] => 0 [size] => 29737 ) )

So no error, standard looking path, but /tmp has no such fil开发者_高级运维e. Further, running a find on my whole system turns up bubkis.

FYI: php.ini has

max_execution_time = 120
file_uploads = On
upload_max_filesize = 2M

and the file I've been uploading is 29k

Any thoughts?


The temporary file is deleted when the PHP script that received it has finished running : it is just a temporary file.

The PHP script to which you are posting the form -- upload.php -- should move the temporary file to a non-temporary location, using move_uploaded_file()


Basically, the idea is :

  • The user uploads a file to your script,
    • That file is stored in a temporary lcoation.
  • Your script works on that file :
    • Checks if the file is OK (content-type, size, ...)
  • And if the file is OK, your script moves it to the permanent storage directory (whereever you want)

If the upload doesn't finish successfully, or if you don't move the file somewhere else, the temporary file is automatically deleted.


As a reference, you should read the following section of the manual : Handling file uploads - POST method uploads

Quoting the part of it which is related to your problem :

The file will be deleted from the temporary directory at the end of the request if it has not been moved away or renamed.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜