我想使用php腳本在html中上傳文件。使用php腳本上傳文件而不離開該頁面
<html>
<body>
<form id='importPfForm' enctype="multipart/form-data" action="http://localhost/js/upload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
Choose a file to upload: <input name="uploaded_file" type="file" />
<input type="submit" value="Upload" />
</form>
</body>
</html>
和 「upload.php的」 包含以下代碼:
<?php
$upload_key = 'uploaded_file';
if (isset($_FILES[$upload_key])) {
try {
$error = $_FILES[$upload_key]['error'];
switch ($error) {
case UPLOAD_ERR_INI_SIZE:
throw new Exception('Exceeded upload_max_filesize');
case UPLOAD_ERR_FORM_SIZE:
throw new Exception('Exceeded MAX_FILE_SIZE');
case UPLOAD_ERR_PARTIAL:
throw new Exception('Incomplete file uploaded');
case UPLOAD_ERR_NO_FILE:
throw new Exception('No file uploaded');
case UPLOAD_ERR_NO_TMP_DIR:
throw new Exception('No tmp directory');
case UPLOAD_ERR_CANT_WRITE:
throw new Exception('Can\'t write data');
case UPLOAD_ERR_EXTENSION:
throw new Exception('Extension error');
}
$finfo = new finfo(FILEINFO_MIME);
$name = $_FILES[$upload_key]['name'];
$tmp_name = $_FILES[$upload_key]['tmp_name'];
$size = $_FILES[$upload_key]['size'];
if ($size > 350000)
throw new Exception('Exceeded 350KB limit');
if (!is_uploaded_file($tmp_name))
throw new Exception('Not an uploaded file');
$type = $finfo->file($tmp_name);
if ($type === false)
throw new Exception('Failed to get MimeType');
if ($type !== 'text/plain; charset=us-ascii')
throw new Exception('Only csv available');
$new_name = dirname(__FILE__).'/upload/'.$name;
echo $new_name;
if (is_file($new_name))
throw new Exception("The file {$new_name} already exists");
if (!move_uploaded_file($tmp_name,$new_name))
throw new Exception('Failed to move uploaded file');
echo "File successfully uploaded as {$new_name}";
} catch (Exception $e) {
echo 'Error: '.$e->getMessage();
}
}
?>
但這種方法會打開一個新的網頁。我想在不離開網頁的情況下執行該功能,並且我需要在html頁面中使用變量$new_name
。我需要在我的html頁面中執行哪些修改?我很確定這是通過某種ajax請求的東西。但我不知道我在說什麼。我對ajax或javascript沒什麼大不過,但這是一個我經常使用的函數,我想知道它是如何工作的,所以我可以在需要現在和未來時實現它。
值添加隱藏'iframe'您頁面,設置你的表單來發布到它('target'屬性),並讓你的php腳本返回一個html頁面,其中一小段javascript告訴父頁面上傳成功/失敗 – yent
或者只是使用http:// blueimp .github.io/jQuery-File-Upload/- 非常重要洪水。 – tmaximini
@Dinoop你有沒有對Ajax做過一些研究,以及它是如何工作的?我不想傷害你,雖然你說你「不知道在說什麼」。順便說一句。即使它沒有錯,您不需要在action屬性中定義'http:// localhost',只需要將數據提交到外部站點即可。 – reporter