سؤال

This could be a very simple thing to do, but it is proving quite hard for me to achieve.

I am in the process of creating a custom plugin for elgg to build a library of things. I want to be able to upload an image when creating a new item.

Currently in my views/default/form/cust_plugin/save.php i have

elgg_view('input/file',array('name'=>'image','value'=>$image);

And in the actions/cust_plugin/save.php i have

$cust_plugin->image = $image;

but this doesn't work.

What am I missing, what am I doing wrong?

Thanks

هل كانت مفيدة؟

المحلول

To upload an image I use "file" plugin so I can manage it very simple. In my function I call

//Load file library
 elgg_load_library('elgg:file');
 //Set multipart/form-data attribute on my form
 $vars = array('enctype' => 'multipart/form-data');
 $body_vars = file_prepare_form_vars();

//Create Array values to return
$return = array(
    'title' => elgg_echo('gallery:title:add'),
    'content' => elgg_view_form('elgg-gallery/uppa', $vars,$body_vars) //My form
    );

My form is:

<div>
<label for="image_upload">Image upload</label>
<?php echo elgg_view('input/file', array('name' => 'img_upload')); ?>
</div>

And my action:

if (empty($_FILES['img_upload']['name']))
{
    $error = elgg_echo('file:nofile');
    register_error($error);
    forward(REFERER);
 }

  //Make a file
  $file = new FilePluginFile();
  $file->subtype = "file";

  // if no title, grab filename
  if (empty($titolo))
     $titolo = htmlspecialchars($_FILES['img_upload']['name'], ENT_QUOTES, 'UTF-8');

   $file->title = $titolo;
   $file->description = "description file";
   $file->access_id = ACCESS_PUBLIC;
   $file->owner_guid = elgg_get_logged_in_user_guid();

   // we have a file upload, so process it
   if (isset($_FILES['img_upload']['name']) && !empty($_FILES['img_upload']['name']))
   {
     //Generate filename
     $prefix = "file/";
$filestorename = elgg_strtolower(time().$_FILES['img_upload']['name']);
$file->setFilename($prefix . $filestorename);
//Set Mimetype
$mime_type = ElggFile::detectMimeType($_FILES['img_upload']['tmp_name'], $_FILES['img_upload']['type']);
$file->setMimeType($mime_type);
//Set attributes
$file->originalfilename = $_FILES['img_upload']['name'];
$file->simpletype = file_get_simple_type($mime_type);
// Open the file to guarantee the directory exists
$file->open("write");
$file->close();
//Move file
move_uploaded_file($_FILES['img_upload']['tmp_name'], $file->getFilenameOnFilestore());
//Save file
$guid = $file->save();

//Make thumbnails
if ($guid && $file->simpletype == "image")
{
    $file->icontime = time();
    $thumbnail = get_resized_image_from_existing_file($file->getFilenameOnFilestore(), 60, 60, true);
    if ($thumbnail)
    {
        $thumb = new ElggFile();
        $thumb->setMimeType($_FILES['img_upload']['type']);

        $thumb->setFilename($prefix."thumb".$filestorename);
        $thumb->open("write");
        $thumb->write($thumbnail);
        $thumb->close();

        $file->thumbnail = $prefix."thumb".$filestorename;
        unset($thumbnail);
    }

    $thumbsmall = get_resized_image_from_existing_file($file->getFilenameOnFilestore(), 153, 153, true);
    if ($thumbsmall)
    {
        $thumb->setFilename($prefix."smallthumb".$filestorename);
        $thumb->open("write");
        $thumb->write($thumbsmall);
        $thumb->close();
        $file->smallthumb = $prefix."smallthumb".$filestorename;
        unset($thumbsmall);
    }

    $thumblarge = get_resized_image_from_existing_file($file->getFilenameOnFilestore(), 600, 600, false);
    if ($thumblarge)
    {
        $thumb->setFilename($prefix."largethumb".$filestorename);
        $thumb->open("write");
        $thumb->write($thumblarge);
        $thumb->close();
        $file->largethumb = $prefix."largethumb".$filestorename;
        unset($thumblarge);
    }
}
if ($guid)
{
    $message = elgg_echo("gallery:status:upsuccess");
    system_message($message);
    forward($guid->getURL());
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top