Php 我如何处理“3”;输入文件";一页上的字段?
我不希望一个字段具有多个属性,我需要3个单独的输入,这些输入将存储在一个MYSQL行中。当我运行页面时,它只在数据库和文件系统中存储第一个图像。我确信这与“tmp_名称”有关,但我不知道如何修复它Php 我如何处理“3”;输入文件";一页上的字段?,php,file-upload,file-io,Php,File Upload,File Io,我不希望一个字段具有多个属性,我需要3个单独的输入,这些输入将存储在一个MYSQL行中。当我运行页面时,它只在数据库和文件系统中存储第一个图像。我确信这与“tmp_名称”有关,但我不知道如何修复它 Array ( [name] => banner_large.jpg [type] => image/jpeg [tmp_name] => C:\wamp\tmp\php3936.tmp [error] => 0 [size] =>
Array
(
[name] => banner_large.jpg
[type] => image/jpeg
[tmp_name] => C:\wamp\tmp\php3936.tmp
[error] => 0
[size] => 37536
)
Array
(
[name] => banner_medium.jpg
[type] => image/jpeg
[tmp_name] => C:\wamp\tmp\php3947.tmp
[error] => 0
[size] => 23017
)
Array
(
[name] => banner_small.jpg
[type] => image/jpeg
[tmp_name] => C:\wamp\tmp\php3948.tmp
[error] => 0
[size] => 13887
)
请帮助。您将在
foreach循环中返回。返回将退出循环
$ct = 0;
foreach ($_FILES as $value) {
$filearray[$ct] = $value;
$ct++;
}
foreach ($filearray as $file) {
if ($file['error'] != 0) {
// error: report what PHP says went wrong
$this -> errors[] = $this -> upload_errors[$file['error']];
return false;
} else {
$this -> temp_path = $file['tmp_name'];
$this -> type = $file['type'];
if ($loop == 0) {
$this -> filename = basename($file['name']);
$this -> size = $file['size'];
} elseif ($loop == 1) {
$this -> filenamem = basename($file['name']);
$this -> sizem = $file['size'];
} else {
$this -> filenames = basename($file['name']);
$this -> sizes = $file['size'];
}
}
}
return true;
我有两件事要提
为什么要遍历$\u FILES数组并将其置于与以前完全相同的状态?默认情况下,数组从0开始编号,您只需再次执行该过程。因此,不要创建fileArray,只需使用$\u文件即可
为什么要将图像属性设置为对象属性?这些属性不是数组,所以您可以将它们设置为数组(例如,$this->temp_path[]),或者将它们插入到实际的foreach循环中的数据库中
而且你的$loop也不是由它的外观来定义的。你不是在任何地方定义$loop
?此外,此代码不会将图像保存到任何位置。尝试上传完整的代码谢谢,$循环在前面创建,但我没有增加它。由于您的帮助,数据库现在存储了所有三个文件,但文件系统中只存储了一个文件。我会再找一次。代码太大,无法全部上载。这和for循环应该具有$key=>$val结构,如foreach($filearray as$loop=>$file){
我尝试访问$\u文件[0]等。但它给出了一个错误,因此我将对象从数组中剥离出来。$loop在前面定义过,但如果没有增加(非常尴尬)。现在一切都很好。
$ct = 0;
foreach ($_FILES as $value) {
$filearray[$ct] = $value;
$ct++;
}
foreach ($filearray as $file) {
if ($file['error'] != 0) {
// error: report what PHP says went wrong
$this -> errors[] = $this -> upload_errors[$file['error']];
return false;
} else {
$this -> temp_path = $file['tmp_name'];
$this -> type = $file['type'];
if ($loop == 0) {
$this -> filename = basename($file['name']);
$this -> size = $file['size'];
} elseif ($loop == 1) {
$this -> filenamem = basename($file['name']);
$this -> sizem = $file['size'];
} else {
$this -> filenames = basename($file['name']);
$this -> sizes = $file['size'];
}
}
}
return true;