How to implement jQuery's Ajax file upload, PHP faithful file upload.
AJAX upload file, PHP upload file.
【PHP file upload】
Before we begin, I think it is necessary to briefly explain the principle of uploading files through the WEB.
Actually, whether it is PHP, JSP, or ASP that processes the uploaded files here, the WEB has already uploaded the files to the server. We just use the upload processing function to process the uploaded files.
The processing functions are generally implemented using server-side languages such as PHP, JSP, and ASP. So how to upload files through WEB (HTTP protocol?) You need HTML code similar to the following:
test.html
Note: enctype="multipart/form-data" is required. It tells the FORM table that this is a file upload type. Once the request is successful, the file will be uploaded to the temporary folder of the server.
As for how the file will be processed after arriving at the destination, it is a matter of PHP, JSP, and ASP.
(However, don’t be too happy too early. If the file is not moved to other places or renamed, the file will be deleted at the end of the form request. So we have to write a script to handle uploaded files)
Here we use PHP to handle it
do_file_upload.php
if(!empty($_FILES[$fileElementName]['error']))
{
switch($_FILES[$fileElementName]['error'])
{
case '1':
$error = 'The transferred file exceeds the limit of the upload_max_filesize option in php.ini';
break;
case '2':
$error = 'The size of the uploaded file exceeds the value specified by the MAX_FILE_SIZE option in the HTML form';
break;
case '3':
$error = 'Only part of the file was uploaded';
break;
case '4':
$error = 'No file uploaded';
break;
case '6':
$error = 'Temp folder not found';
break;
case '7':
$error = 'File writing failed';
break;
default:
$error = 'Unknown error';
}
}elseif(empty($_FILES['fileToUpload']['tmp_name']) || $_FILES[ 'fileToUpload']['tmp_name'] == 'none')
{
$error = 'No file uploaded.';
}else if(!in_array($fileSuffixName,$allowType))
{
$error = 'File type not allowed to upload';
}else{
);
if($ok === FALSE){
$error = 'Upload Failed';
}
}
?>
Another note: About the $_FILES array
This array contains all uploaded file information, which records the relevant information when uploading files.
The contents of the $_FILES array in the above example are as follows. Let's assume that the name of the file upload field is userfile as shown in the example above. The name can be whatever you want.
$_FILES['userfile']['name']
The original name of the client machine file.
$_FILES['userfile']['type']
The MIME type of the file, if the browser provides this information. An example is "image/gif". However, this MIME type is not checked on the PHP side, so don't take it for granted.
$_FILES['userfile']['size']
The size of the uploaded file, in bytes.
$_FILES['userfile']['tmp_name']
The temporary file name stored on the server after the file is uploaded.
$_FILES['userfile']['error']
Error code related to the file upload. This project was added in PHP version 4.2.0.
【AJAX file upload】
In fact, it is to achieve refresh-free file upload. The IFRAME file upload principle can be used.
Actually when uploading files with PHP. . . Only the $_FILES format can be used, but if we just use JS to get its ID, such as ..document.getElementById('img').value or jquery $("#img") in the form cannot be actually uploaded (but there are still many people doing this, including me at the beginning).
But the function also requires the implementation of the so-called "asynchronous upload", what should I do? ? You can only use third-party components, or write one yourself (embed an IFRAME in the web page). But if you are considering development time, you can use a third party. Here is a good jQuery Ajax file upload component, which is "ajaxfileupload.js". Its component download address is: http://www.phpletter.com/ , there is a PHP application demo inside after downloading, which is easy to understand.
Process:
(1) Code of the file on the front end: test.php
相应的HTML为:
这样客户端就完成了。
(2) 再服务器端时 doajaxfileupload.php
此处为了简便的检测是否真正的传值过来了,你可以将它存起来了。
$file_infor = var_export($_FILES,true);
file_put_contents("d:file_infor.php".$file_infor);
这样你打来刚生成的file_infor.php文件时,你又看到了熟悉的信息了: