我試圖從php腳本上傳文件(imageupload.php)的一個頁面中檢索文件名,並且希望將它顯示在JavaScript中的另一個頁面中函數(QandATable.php)。但我不知道如何做到這一點嘗試檢索文件名時文件未上傳
我會告訴你所有的相關代碼,所以你可以關注它,所以你能夠理解發生了什麼。
更新:下面我將向您展示如何上傳文件的步驟。下面的代碼成功上傳文件。
下面是表格(QandATable.php);
var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" +
<label>Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><label class='imagelbl'>" +
"<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" +
"</p><ul class='listImage' align='left'></ul>" +
"<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe></form>");
在同一個頁面,當用戶提交表單時,它會在下面的函數,它將檢查確認,然後當確認是明確的,它會去到startImageUpload()
功能:
function imageClickHandler(imageuploadform){
if(imageValidation(imageuploadform)){
return startImageUpload(imageuploadform);
}
return false;
}
如果沒有驗證,它將進入下面的隱藏文件輸入的JS函數(QandATable.php),它會將表單提交到發生文件上傳的imageupload.php。當文件上傳時,它會回調stopImageUpload()函數(QandAtable.php),它會顯示有關文件是否已上傳的消息,並且這是我希望服務器上的文件名稱爲追加。
下面是startImageUpload()函數:
var sourceImageForm;
function startImageUpload(imageuploadform){
$(imageuploadform).find('.fileImage').css('visibility','hidden');
sourceImageForm = imageuploadform;
return true;
}
下面是PHP腳本在那裏上傳文件(imageupload.php):
<?php
session_start();
$result = 0;
if ($_FILES["fileImage"]["error"] > 0) {
echo "Error: " . $_FILES["fileImage"]["error"] . "<br />";
} else {
echo "Upload: " . $_FILES["fileImage"]["name"] . "<br />";
echo "Type: " . $_FILES["fileImage"]["type"] . "<br />";
echo "Size: " . ($_FILES["fileImage"]["size"]/1024) . " Kb<br />";
echo "Stored in: " . $_FILES["fileImage"]["tmp_name"];
}
if(file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {
$_SESSION['fileImage']['name'] = $_FILES['fileImage']['name'];
$parts = explode(".",$_FILES['fileImage']['name']);
$ext = array_pop($parts);
$base = implode(".",$parts);
$n = 2;
while(file_exists("ImageFiles/".$base."_".$n.".".$ext)) $n++;
$_FILES['fileImage']['name'] = $base."_".$n.".".$ext;
move_uploaded_file($_FILES["fileImage"]["tmp_name"],
$_SESSION['fileImage']['name'] = $_FILES['fileImage']['name'];
"ImageFiles/" . $_FILES["fileImage"]["name"]);
$result = 1;
}
else
{
move_uploaded_file($_FILES["fileImage"]["tmp_name"],
"ImageFiles/" . $_FILES["fileImage"]["name"]);
$result = 1;
}
?>
<script language="javascript" type="text/javascript">
window.top.window.stopImageUpload(<?php echo $result;?>);
</script>
最後,當上傳完成後,又回到stopUploadImage()函數(QandATable.php)顯示消息是否成功上傳文件。這也是我希望追加從服務器上傳的文件名的地方。
function stopImageUpload(success){
var result = '';
if (success == 1){
result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>';
$('.listImage').append('<br/>');
}
else {
result = '<span class="emsg">There was an error during file upload!</span><br/><br/>';
}
return true;
}
它仍然同樣的事情,它不會上傳文件,它試圖加載文件,因爲你看到加載欄,但它不做或完成上傳 – user1341521 2012-04-19 21:14:02
你試着改變你的原始代碼'<?php echo $ result;?>'到'<?php echo「'$ result'」;?>'? – jnthnjns 2012-04-19 21:21:27
我已經試過,仍然在做同樣的事情,我只是不能看到問題出在哪裏:( – user1341521 2012-04-19 21:26:51