色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php ajax 附件

趙雅婷1年前9瀏覽0評論

PHP和Ajax是網頁開發中非常重要的組成部分,其中附件的處理也是不可忽視的。

在一個實際的網站上,有時需要讓用戶上傳文件,例如圖片、文檔等。這時候,我們需要用到PHP的上傳功能。

<form action="upload.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>

這是一個簡單的HTML表單,通過POST方式提交到upload.php文件中。其中enctype屬性必須設置為multipart/form-data,這樣才能上傳二進制文件。

<?php
if(isset($_POST["submit"])){
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOK = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
if ($uploadOK == 0) {
echo "Sorry, your file was not uploaded.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
}
?>

代碼中先定義了文件上傳后的目標路徑,然后獲取上傳文件本身的相關信息,如名字、后綴等等。最后利用move_uploaded_file()函數將文件從臨時路徑移動到目標路徑。

然而,這種方式僅僅能夠上傳一個文件。如果要上傳多個文件,我們就需要使用屬性。

<form action="upload.php" method="post" enctype="multipart/form-data">
Select multiple files to upload:
<input type="file" name="filesToUpload[]" id="filesToUpload" multiple>
<input type="submit" value="Upload Files" name="submit">
</form>

這是相對于之前的單文件上傳而言,多了一個[],表示文件可以選擇多個。

<?php
if(isset($_POST["submit"])){
$target_dir = "uploads/";
$uploadOK = 1;
for($i=0; $i

最終的PHP代碼則增加了一個循環,以便上傳多個文件。同時,HTML表單中也多了一個multiple屬性,其值為true時在單個表單項里允許用戶選擇多個文件。

當需要讀取上傳的文件時,可以使用PHP的文件讀寫操作。

$myfile = fopen("uploads/filename.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("uploads/filename.txt"));
fclose($myfile);

以上代碼打開并讀取名為filename.txt的文本文件并輸出。

除了上傳和讀取文件,Ajax有時候也需要利用PHP來實現附件的下載。例如,我們要實現一個文件列表,讓用戶可以根據自己的需求下載相應的文件。

PHP代碼:

<?php
$file = $_GET["file"];
$filename = basename($file);
$filepath = "uploads/".$filename;
if(!empty($filename) && file_exists($filepath)){
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
readfile($filepath);
exit;
}else{
echo 'The file does not exist in server';
}
?>

在這個例子中,$file變量的值會通過GET方式傳送到下載腳本。然后根據$file的值,獲取要下載文件的路徑、名字和類型,最后將其讀取到緩存中并輸出。

Ajax代碼:

function downloadFile(file) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "download.php?file="+file, true);
xhr.responseType = "blob";
xhr.onload = function(){
var urlCreator = window.URL || window.webkitURL;
var imageUrl = urlCreator.createObjectURL(this.response);
var tag = document.createElement('a');
tag.href = imageUrl;
tag.download = file;
document.body.appendChild(tag);
tag.click();
document.body.removeChild(tag);
};
xhr.onprogress = function(event){
if (event.lengthComputable) {
var percentComplete = (event.loaded / event.total)*100;
}
}
xhr.send();
}

當用戶點擊某個下載按鈕時,會通過Ajax觸發downloadFile()函數,在該函數中通過XMLHttpRequest對象獲取下載文件,并在頁面上創建一個a標簽并模擬點擊操作以觸發下載操作。

總而言之,PHP和Ajax對網站的附件處理非常重要,因為只有充分利用這些工具,才能為用戶提供更好的服務,增強用戶體驗。

下一篇php ajax