我在下面有这个代码,问题是它没有上传文件,底部的回调javascript函数没有显示结果。现在,在我输入if isset($ _POST [fileImage'])...代码和$_SESSION['fileImage']['name'] = $_FILES['fileImage']['name'];
之前,文件已经完美上传。但是这两段代码已经停止了上传的发生
所以我认为问题在于我使用的上面的代码放在了错误的地方。如何将下面的代码正确放置在正确的位置,以便上传再次开始工作?
以下是假设上传文件但失败的代码:
<?php
$result = 0;
if (isset($_POST['fileImage']) && ((($_FILES["fileImage"]["type"] == "image/gif")
|| ($_FILES["fileImage"]["type"] == "image/jpeg")
|| ($_FILES["fileImage"]["type"] == "image/pjpeg")
|| ($_FILES["fileImage"]["type"] == "image/jpg")
|| ($_FILES["fileImage"]["type"] == "image/png")
|| ($_FILES["fileImage"]["type"] == "image/tif"))){
if( file_exists("ImageFiles/".$_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"],
"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.stopImageUpload(<?php echo $result;?>);
</script>
<?php
}
$_SESSION['fileImage']['name'] = $_FILES['fileImage']['name'];
?>
答案 0 :(得分:0)
考虑使用函数来处理上传:
function handleImageUpload()
{
// was a file uploaded?
if (!isset($_FILES['fileImage'])) {
return;
}
if (!isImage($_FILES['fileImage'])) {
// consider throwing an exception here
return;
}
$savepath = getFileSavePath($_FILES['fileImage'], 'ImageFiles/')
// handle upload
// ...
}
function isImage($imagepath)
{
// return boolean
}
function getFileSavePath($uploadpath, $destinationdirectory)
{
// return path to save upload without overwriting any existing file
}
考虑使用pathinfo()
获取有关该文件的信息。 http://www.php.net/manual/en/function.pathinfo.php
答案 1 :(得分:0)
我发现您正在使用$_FILES["fileImage"]
和$_POST['fileImage']
并且不确定这是否正确。
您所写的方式并不能使其足够清晰以便轻松识别错误..您可以使用此
尝试
<?php
$result = 0;
$errors = array ();
$dirImage = "ImageFiles/";
$allowedTypes = array (
"image/jpeg",
"image/gif",
"image/pjpeg",
"image/jpg",
"image/png",
"image/tif"
);
if (isset ( $_FILES ['fileImage'] ) && $_FILES ["fileImage"] ["error"] == UPLOAD_ERR_OK) {
$fileName = $_FILES ['fileImage'] ['name'];
$fileSize = $_FILES ['fileImage'] ['size'];
$fileTemp = $_FILES ['fileImage'] ['tmp_name'];
$fileType = $_FILES ['fileImage'] ['type'];
$fileExt = pathinfo ( $fileName, PATHINFO_EXTENSION );
$fileExt = strtolower ( $fileExt );
if (empty ( $fileName ))
continue;
if (! in_array ( $fileType, $allowedTypes )) {
$errors [] = "File Type is not accepted";
}
if(!is_writable($dirImage ))
{
$errors [] = "File Destination not writeable";
}
$fileDst = $dirImage . DIRECTORY_SEPARATOR . $fileName;
$filePrifix = basename ( $fileName, "." . $fileExt );
$i = 0;
while ( file_exists ( $fileDst ) ) {
$i ++;
$fileDst = $dirImage . DIRECTORY_SEPARATOR . $filePrifix . "_" . $i . "." . $fileExt;
}
// Move the file
if (count ( $errors ) == 0) {
if (move_uploaded_file ( $fileTemp, $fileDst )) {
$result = 1;
}
}
}
$_SESSION ['fileImage'] ['name'] = $_FILES ['fileImage'] ['name'];
?>
请注意,错误存储在$errors
变量中,我建议您将其转换为json
,可以通过JavaScript代码调用