欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php upload 緩存

韓冬雪1年前6瀏覽0評論
在Web應(yīng)用程序開發(fā)過程中,文件上傳是一個非常常見的功能。PHP是一個開源的服務(wù)器端編程語言,與文件上傳過程相關(guān)的一些高級特性,如緩存,也被集成在了PHP中。
PHP Upload緩存是一個有趣的特性,它使得文件上傳功能更加水滑,更易于處理。我們知道,當用戶上傳大文件時,傳輸過程可能需要幾秒鐘甚至幾分鐘。如果用戶提交一個表單并在等待上傳完成時停止并重新加載頁面,則重復(fù)提交表單會導(dǎo)致進程出錯,并且文件很可能被丟失。
為了避免這種情況,PHP的上傳緩存功能會在上傳進程中保留用戶上傳的文件數(shù)據(jù),并在用戶繼續(xù)上傳時自動恢復(fù)之前的進度。這可以幫助用戶更快地上傳文件,并緩解服務(wù)器端和客戶端之間的網(wǎng)絡(luò)流量。而且,不需要向用戶顯示一個繁瑣的進度條,因為上傳進度可以自動恢復(fù),用戶也可以重新開始下載進程而不必重復(fù)使用頭幾步。
下面我們來看一下如何在PHP中使用上傳緩存:
首先,需要在表單中添加一個hidden類型的輸入,來存儲上傳緩存文件。
<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="fileToUpload" />
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<input type="hidden" name="uploadcache" value="1" />
<input type="submit" value="Upload" name="submit" />
</form>

第二步,需要添加一些PHP代碼來處理文件上傳進度和恢復(fù)上傳緩存。
if(isset($_FILES['fileToUpload']['name']) && $_FILES['fileToUpload']['name'] !== ''){
if(isset($_POST['uploadcache']) && $_POST['uploadcache'] == 1 && $_FILES['fileToUpload']['error'] == 4 && isset($_POST['uploadtoken']) && $_POST['uploadtoken'] !== ''){
$temp_upload_file = sprintf('%s%s%s', ini_get('upload_tmp_dir'), DIRECTORY_SEPARATOR, $_POST['uploadtoken']);
if(file_exists($temp_upload_file)){
$upload_cache = unserialize(file_get_contents($temp_upload_file));
if(is_array($upload_cache)){
$_SESSION['upload_cache'] = $upload_cache;
}
}
}
if(isset($_SESSION['upload_cache']) && is_array($_SESSION['upload_cache'])){
$upload_cache = $_SESSION['upload_cache'];
$upload_cache['file'] = $_FILES['fileToUpload'];
$upload_cache['file']['status'] = 'recv';
}else{
$upload_cache = array(
'file' => $_FILES['fileToUpload'],
'file_name' => $_FILES['fileToUpload']['name'],
'file_size' => $_FILES['fileToUpload']['size'],
'max_file_size' => 100 * 1024 * 1024,
'status' => 'recv'
);
}
if(isset($upload_cache['file']['error']) && $upload_cache['file']['error'] == UPLOAD_ERR_OK){
$file_location = sprintf('%s%s%s', 'upload/', md5($upload_cache['file']['name'] . time()), $upload_cache['file']['name']);
if(move_uploaded_file($upload_cache['file']['tmp_name'], $file_location)){
$status = true;
session_start();
unset($_SESSION['upload_cache']);
}
}else{
$status = false;
$error_message = 'Something went wrong, please try again later!';
}
}

以上代碼通過檢測$_FILES和指定的上傳令牌來恢復(fù)上傳緩存,使用$_SESSION數(shù)組保存用戶上傳信息,在文件上傳進度發(fā)生變化時,更新用戶的上傳狀態(tài)。
從上面的例子可以看出,使用PHP Upload緩存特性可以增加用戶上傳文件的體驗并縮短上傳時間,非常適合上傳文件大小超過100 MB的網(wǎng)站。因此,我們建議在開發(fā)Web應(yīng)用程序并添加上傳文件功能時,采用這種緩存機制。