我正在将文件上传系统的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;
}
答案 0 :(得分:0)
此:(不起作用)
$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'];
在此代码中,$ fileArray是一个数组数组。 因此,您不能将其视为一维数组并期望从中获取实际值。
执行此操作时:
$p_img = $_FILES['file'];
$fileNameVar = $p_img['name'];
$fileTmpNameVar = $p_img['tmp_name'];
$fileSizeVar = $p_img['size'];
$fileErrorVar = $p_img['error'];
每个都是实际值。
即$fileNameVar
包含文件上传时的实际原始名称。
这是您可以做的:
$fileUploadData = $fileArray['file'];
$filename = $fileUploadData['name'];
$tmp_name = $fileUploadData['tmp_name'];
$filesize = $fileUploadData['size'];
$file_error = $fileUploadData['error'];
// Other code goes here.
其他想法:
function UploadFile($fileArray = array(), $destinationFolder = '../project_images/')
应该是:
function UploadFile($fileArray, $destinationFolder = '../project_images/')
没有默认值是没有道理的。如果数组为空,则在这种情况下没有任何明智的选择。