1

我的网站上有很多图像,当我尝试对这些图像进行管理员编辑时,我需要每次为所有这些图像输入图像名称,即使我只需要对一个图像进行编辑,因为它是“文件”类型。是否有任何解决方法可以将“文件”类型的图像的默认值填充到输入字段中?我的代码如下:

if ($this->request->is('post') || $this->request->is('put')) {

                $mainimg = $this->request->data['Product']['image'];
                $img1 = $mainimg['name'];

                if ($mainimg['error'] === UPLOAD_ERR_OK){
                    move_uploaded_file($mainimg['tmp_name'], APP.'webroot'.DS.'img'.DS.$img1);
                }
                 //the uploaded file renamed 
                $this->request->data['Product']['image'] = $img1;

这是我的 admin_view.ctp

<script type="text/javascript">
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();

reader.onload = function (e) {
$('#blah').attr('src', e.target.result);
}

reader.readAsDataURL(input.files[0]);
}

} 
<div class="Products form">
<?php echo $this->Form->create('Product',array('enctype' => 'multipart/form-data'));?>
<legend><?php echo __('Admin Edit Product'); ?></legend>    
    <fieldset>

    <?php
        echo $this->Form->input('id');
        echo $this->Form->input('name');
        echo $this->Form->input('description',array('class'=>'ckeditor'));
         echo $this->Form->label('Product Image');
                 $img=$this->data['Product']['image'];
                 echo $this->Html->image($img,array('id'=>'blah','width'=>'100px'));?><br>
                 <div id="dim"><?php echo "Dimension : 170 &#215; 195px";?> </div>

<input type='file' name="data[Product][image]"  id="image" onchange='readURL(this);' >

        <?php echo $this->Form->end(__('Save'));?>
    </fieldset>

</div>    

javascript 用于预览所选图像。我可以使用此代码预览默认图像,但无法获取要编辑的图像名称。

4

2 回答 2

0

PHP 的超级全局 $_FILES 应该为您提供足够的信息,以便根据文件名自动命名您的图像。

尝试添加

if ($this->request->is('post') || $this->request->is('put')) {
   pr($_FILES);
   ...

到您的控制器函数以查看通过 $_FILES 全局传递的数据并使用它提供的名称。这将是类似的东西$_FILES['image'][0]['name'];。还有各种信息,如文件大小、尺寸等,供您保存到数据库中。

于 2013-07-09T13:04:40.677 回答
0

我的问题是,每次有人编辑文本时,他们也必须通过选择文件来选择图像。我找到了一个解决方案,除非用户需要更改图像,否则即使用户没有选择图像,当前值也会存在。我刚刚将以下代码添加到我的控制器

$product=$this->Product->read(NULL, $id);
$currentimg= $product['Product']['image'];
if ($this->request->is('post') || $this->request->is('put')) {

                $mainimg = $this->request->data['Product']['image'];
                $img1 = $mainimg['name'];

                if ($mainimg['error'] === UPLOAD_ERR_OK){
                    move_uploaded_file($mainimg['tmp_name'], APP.'webroot'.DS.'img'.DS.$img1);

                 //the uploaded file renamed 
                $this->request->data['Product']['image'] = $img1;
}
 elseif($mainimg['error'] === UPLOAD_ERR_NO_FILE){
                    $this->request->data['Product']['image']=$currentimg;
                }
于 2013-08-01T02:24:17.663 回答