我正在努力构建一个文件上传器,我的第一个,我收到一个错误(无论我做什么)我无法解决!它返回undefined offset
告诉我$_FILES
数组中没有任何内容......但我选择了照片(它只是没有检索数据)!您将在下面找到与此问题相关的所有代码。我试图自己调试这个,但绝对没有成功。
更新
在实施@ Dave的建议后,不再有offset
个错误...但是,发送到$_POST
的唯一内容是max_file_size
,并且没有任何内容被发送到{ {1}}数组。我已经包含了返回以及下面的更新代码。
这是我正在处理的回报:
$_FILES
这是我的代码
HTML表单:
// From print_r( $_POST );
Array ( [MAX_FILE_SIZE] => 33554432 [upload] => )
// From print_r( $_FILES );
array(1) { ["photos"]=> array(5) { ["name"]=> array(1) { [0]=> string(0) "" }
["type"]=> array(1) { [0]=> string(0) "" } ["tmp_name"]=> array(1)
{ [0]=> string(0) "" } ["error"]=> array(1) { [0]=> int(4) } ["size"]=>
array(1) { [0]=> int(0) } } }
// From var_dump( $_FILES ); just to be sure my bases are covered
array(5) { ["name"]=> array(1) { [0]=> string(0) "" } ["type"]=> array(1)
{ [0]=> string(0) "" } ["tmp_name"]=> array(1) { [0]=> string(0) "" }
["error"]=> array(1) { [0]=> int(4) } ["size"]=> array(1) { [0]=> int(0) } }
// Return from my else showing that $_FILES['photos']['name'] is empty
Nope this doesn't work either!
PHP文件处理程序(upload.php):
<form id="photo-upload" method="POST" action="<?php echo plugins_url( 'photo-uploadr/templates/upload.php' ); ?>" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="33554432" />
<input type="file" id="file-upload" name="photos[]" multiple />
<button type="button" class="btn" id="pick-photos"><?php _e( "Select Photos to Upload", "shorti" ); ?></button>
<ul id="file-uploads">
<!-- The file uploads will be shown here -->
</ul>
<button name="upload" id="upload" class="btn upload"><?php _e("Upload", "shorti"); ?></button>
</form>
结束更新
就像我说我是新手从表单上传文件...我正在使用this code来尝试理解上传...我敢肯定这将是非常简单的我不会见。
如果可能的话,我今天真的需要解决这个问题...但是,任何帮助都会受到赞赏!感谢
答案 0 :(得分:1)
尝试一下,看看这是否只是真正的变化,但我之前遇到过foreach和range的问题
$uploaded = count($_FILES['photos']['name']);
for ($i=0;$i<$uploaded;$i++) {
$file_array = array(
'name' => $_FILES['photos']['name'][$i],
'type' => $_FILES['photos']['type'][$i],
'tmp_name' => $_FILES['photos']['tmp_name'][$i],
'error' => $_FILES['photos']['error'][$i],
'size' => $_FILES['photos']['size'][$i]
);
//rest of your logic code here
}
答案 1 :(得分:0)
因为有1个文件,所以以下内容正在生成Array ( [0] => 0 [1] => 1 )
:
range( 0, $count_files ) // range( 0, 1 )
这是不正确的;该脚本试图找到2个文件。您需要将其更改为:
range( 0, $count_files - 1 )
答案 2 :(得分:0)
我认为你必须迭代到$ count_files - 1,因为如果你上传1个文件,你的foreach循环当前会执行两次。