Я нахожусь в процессе перемещения кода PHP для системы загрузки файлов в собственный файл, поэтому я могу загрузить файл с помощью AJAX.
Я столкнулся с проблемой, когда не могу получить этот обновленный код:
$filename = $fileArray[$fileNameVar];
$tmp_name = $fileArray[$fileTmpNameVar];
$filesize = $fileArray[$fileSizeVar];
$file_error = $fileArray[$fileErrorVar];
$file = $fileArray[$p_img];
Чтобы работать так, как раньше, вот так:
$filename = $fileArray['file']['name'];
$tmp_name = $fileArray['file']['tmp_name'];
$filesize = $fileArray['file']['size'];
$file_error = $fileArray['file']['error'];
$file = $fileArray['file'];
Когда я пытаюсь var_dump
что-либо из набора новых переменных, я ничего не вижу в ответе.
Кто-нибудь знает, как мне настроить этот массив?
Вот полный код:
$p_img = $_FILES['file'];
//var_dump($p_img);
$fileNameVar = $p_img['name'];
$fileTmpNameVar = $p_img['tmp_name'];
$fileSizeVar = $p_img['size'];
$fileErrorVar = $p_img['error'];
//$fileFileVar = $p_img['file'];
try {
// If you make a file function, you can change where things are saved
// You can also change the destination (for portability)
function UploadFile($fileArray = array(), $destinationFolder = '../project_images/') {
/* $filename = $fileArray['file']['name'];
$tmp_name = $fileArray['file']['tmp_name'];
$filesize = $fileArray['file']['size'];
$file_error = $fileArray['file']['error'];
$file = $fileArray['file'];
*/
$filename = $fileArray[$fileNameVar];
$tmp_name = $fileArray[$fileTmpNameVar];
$filesize = $fileArray[$fileSizeVar];
$file_error = $fileArray[$fileErrorVar];
$file = $fileArray[$p_img];
var_dump($filename);
// Save all the default data.
// Success and error should be set by default to fail
$return['error'] = true;
$return['success'] = false;
$return['file']['dest'] = $destinationFolder.$filename;
$return['file']['size'] = $filesize;
if($file_error == 0)
$return['error'] = false;
// I added a directory creation function so you don't have to
// manually make folders. This will do it for you.
if(!is_dir($destinationFolder))
mkdir($destinationFolder,0755,true);
// If your filename is not empty, return success or fail of upload
if (!empty($filename))
$return['success'] = (move_uploaded_file($tmp_name, $destinationFolder.$filename));
return $return;
}
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
file_put_contents('error_log_top', "\n[{$date->format('Y-m-d H:i:s')}]" . "Error adding attachment: \n" . print_r($e, 1), FILE_APPEND);
}
РЕДАКТИРОВАТЬ: Как я вызываю функцию uplaodFile:
if(isset($_POST['create'])) {
// Try uploading
$upload = UploadFile($_FILES);
// If upload fails
if(!$upload['success']) {
echo '<h3>Sorry, an error occurred</h3>';
}
else {
// You could add error handling here based on the results of
// each function's success or failure below.
// Try to save it
$saveToDb = SaveToDb($con,$upload['file']['dest']);
// Get the profile from image name
$profPic = ($saveToDb)? getPhoto($con,$upload['file']['dest']) : false;
}
}
Редактировать - Обновлен код:
function UploadFile($fileArray, $destinationFolder = '../project_images/') {
$fileUploadData = $fileArray['file'];
$filename = $fileUploadData['name'];
$tmp_name = $fileUploadData['tmp_name'];
$filesize = $fileUploadData['size'];
$file_error = $fileUploadData['error'];
var_dump($filename);
// Save all the default data.
// Success and error should be set by default to fail
$return['error'] = true;
$return['success'] = false;
$return['file']['dest'] = $destinationFolder.$filename;
$return['file']['size'] = $filesize;
if($file_error == 0)
$return['error'] = false;
if(!is_dir($destinationFolder))
mkdir($destinationFolder,0755,true);
// If your filename is not empty, return success or fail of upload
if (!empty($filename))
$return['success'] = (move_uploaded_file($tmp_name, $destinationFolder.$filename));
return $return;
}