Uploading file via html form. In PHP, $_FILES is empty

倖福魔咒の 提交于 2019-12-20 04:43:09

问题


So I have this code:

<form name="form" action="./" method="post">
<input type="file" name="newfile" id="newfile" />
</form>

When I run this php script on the action page, nothing happens

echo "$_FILES['newfile']['name'];
print_r($_FILES);

It is like the $_FILES variable is empty. Is there any way to fix this?


回答1:


You need to set the enctype="multipart/form-data" attribute on your form.

Example 1 from php.net:

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>



回答2:


If you don't specify <form … enctype="multipart/form-data"> then the data will be encoded in a way that doesn't support files.

Add the attribute with that value.

From the HTML specification:

enctype = content-type [CI]

This attribute specifies the content type used to submit the form to the server (when the value of method is "post"). The default value for this attribute is "application/x-www-form-urlencoded". The value "multipart/form-data" should be used in combination with the INPUT element, type="file".

From the PHP manual:

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">



回答3:


echo "$_FILES['newfile']['name'];

That's a syntax error. Should be

echo $_FILES['newfile']['name']; 

or

echo "{$_FILES['newfile']['name']}";


来源:https://stackoverflow.com/questions/8055429/uploading-file-via-html-form-in-php-files-is-empty

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!