所以目前我的html <input type="file" required required="required" name="image" multiple="">
然后在我添加mutliple=""
标记之前,这对我来说总是有用,
if(isset($_POST['Submit']))
{
$current_image=$_FILES['image']['name'];
$extension = substr(strrchr($current_image, '.'), 1);
if (($extension!= "png") && ($extension != "jpg"))
{
die('Unknown extension');
}
$time = date("fYhis");
$new_image = $time . "." . $extension;
$destination="./../img/treatments/".$new_image;
$action = copy($_FILES['image']['tmp_name'], $destination);
但现在我正在尝试上传多个文件,我想我需要添加一个数组来命名它们,但我无法弄明白,如果可以的话,我不想更改我的代码。
目前img只是我数据库中的一个字段,这有多少问题?
修改
我找到了这段代码,但似乎无法弄清楚如何实现它并让它工作......
在尝试了几十种方法来修复$ _FILES数组的不稳定之后,我找不到任何可以使用输入名称的方法:userfile [christiaan] [] [] [is] [gaaf] [ ]
所以我提出了这个课程
<?php
/**
* A class that takes the pain out of the $_FILES array
* @author Christiaan Baartse <christiaan@baartse.nl>
*/
class UploadedFiles extends ArrayObject
{
public function current() {
return $this->_normalize(parent::current());
}
public function offsetGet($offset) {
return $this->_normalize(parent::offsetGet($offset));
}
protected function _normalize($entry) {
if(isset($entry['name']) && is_array($entry['name'])) {
$files = array();
foreach($entry['name'] as $k => $name) {
$files[$k] = array(
'name' => $name,
'tmp_name' => $entry['tmp_name'][$k],
'size' => $entry['size'][$k],
'type' => $entry['type'][$k],
'error' => $entry['error'][$k]
);
}
return new self($files);
}
return $entry;
}
}
?>
这允许您访问使用以下inputtype上载的文件
<input type="file" name="userfile[christiaan][][][is][gaaf][]" />
像
<?php
$files = new UploadedFiles($_FILES);
var_dump($files['userfile']['christiaan'][0][0]['is']['gaaf'][0]);
// or
foreach($files['userfile']['christiaan'][0][0]['is']['gaaf'] as $file) {
var_dump($file);
}
?>
答案 0 :(得分:0)
答案 1 :(得分:0)
尝试这个(你的问题实际上似乎是完全缺少对这一切在PHP中是如何工作的理解,而不是某些特定的问题/ bug /...):
whatever.php:
<form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF']?>">
First file: <input type="file" name="uploads[]" /><br>
Second File: <input type="file" name="uploads[]" /><br>
Multiple files at once (firefox, chrome, ... not IE < 10): <input type="file" name="uploads_multiple[]" multiple="multiple" /><br>
<input type="submit" value="Go" />
</form>
<?php
print_r($_FILES);
尝试使用不同的输入(文件大小,缺少文件,...)来查看从php中获得的内容。我认为,除了发布一些完成的代码之外,你将从这种方式中受益更多。
编辑:此外,请勿使用副本!大部分时间它都不起作用,有时它可能会产生意想不到的结果,有时候你只会打开一堆蠕虫。函数move_uploaded_file存在是有原因的 - 使用IT!