我有一个自定义WordPress元数据框,我上传文件
只有位置保存到数据库,文件(csv)保存到服务器
在fgetcsv的帮助下,我将csv发送到页面(前端)
我希望能够在一个页面上拥有多个文件。
因此,我(在互联网的帮助下)创建了动态字段,仅在必要时添加
在wp_upload_bits
的帮助下将文件保存到数据库中,这意味着有一个使用文件名和文件URL保存的数组。所以,为了回应它们,我使用:$file['file']
或$ file [' url']
现在问题:
为了动态添加和删除字段,有一个foreach循环回显所有uploades文件。
因为数组用wp_upload_bits
保存在数据库中,所以我总是得到两个输出(文件和URL),我只想要文件。
这是代码。 我似乎无法弄清楚:
<?php
$file = get_post_meta(get_the_ID(), 'meta_box_csv', true);
$c = 0;
$i = 0;
if ( count( $file['file'] ) > 0 ) {
foreach( $file as $csv ) {
if ( isset( $csv['file']) ) {
printf( '<p><input type="file" id="meta_box_csv_'.$i.'" name="meta_box_csv_'.$c.'" value="'.$csv['file'].'" size="15" /><span class="remove">Remove</span> </p>' );
$c = $c +1;
$i = $i +1;
}
}
}
?>
答案 0 :(得分:0)
根据您提供的转储,$file
仅代表单个文件而不是文件集合,因此foreach
没有任何结果。您应该只能使用isset($file['file'])
代替printf
$file['file']
然后$csv['file']
<?php
$file = get_post_meta(get_the_ID(), 'meta_box_csv', true);
$c = 0;
$i = 0;
if ( isset( $file['file']) ) {
printf( '<p><input type="file" id="meta_box_csv_'.$i.'" name="meta_box_csv_'.$c.'" value="'.$file['file'].'" size="15" /><span class="remove">Remove</span> </p>' );
$c = $c +1;
$i = $i +1;
}