Hello,

I have tried to use Plupload integration in my custom module but I couldnt upload file in _submit hook. Is there any example how can I upload images after form submitted.

Best Regards,

Comments

Files will be uploaded to a temporary location before _submit gets invoked. You should get them in $form_state when execution hits submit function and it is up to you what to do with them.

Sorry for a late reply. Hope it helps.

I have tried to create a node and attach a file using plupload. Please guide me in this regard. In $form_state I am getting following array:

[pud] => Array
                (
                    [0] => Array
                        (
                            [tmppath] => temporary://p17es0eqti1sud9jk1k4aj41ja74.tmp
                            [tmpname] => p17es0eqti1sud9jk1k4aj41ja74.tmp
                            [name] => dummy123.pdf
                            [status] => done
                        )
                )

Hi "Drupalers" and an happy new year !

I've the same problem : what are we doing with this ?
file_save_upload, file_copy, file_move don't save the images (or files) in the public directory...

Thanks for your answers.
Regards,
MaudeH

Hi,
@Romi : just in case you need some help...

<?php
function waip_gallery_create_form_submit($form, &$form_state) {
   
$values = $form_state['values'];
   
// Prepare the new node
   
$node = new stdClass();
   
$node->type = 'machine_name'; // The machine name of your content-type
   
$node->uid = 0; // The user ID who create the node (0: anomymous | 1: admin)
   
$node->created = strtotime('now');
   
$node->changed = strtotime('now');
   
$node->status = 0; // Is the node published or not ?
   
$node->comment = 0;
   
$node->promote = 0;
   
$node->moderate = 0;
   
$node->sticky = 0;
   
$node->language = 'und';
   
node_object_prepare($node);
   
// Add some datas to $node
   
$node->title = 'The new node title'; // The title
   
$node->field_custom_field1[$node->language][0] = array(
       
// A custom field in relation with your form
       
'value' => $values['field1'],
       
'format' => NULL,
       
'safe_value' => $values['field1']
    );
   
// Prepare the file to upload
   
$filepath = 'public://path/to/your/folder';
   
file_prepare_directory($filepath, FILE_CREATE_DIRECTORY); // Create the folder if it doesn't exist
   
$files_count = count($values['pud']);
    for (
$i = 0; $i < $files_count; $i++) { // For all your files to upload (i use 'pud' from your code above)
       
$path = $values['pud'][$i]['tmppath']; // eg: temporary://p17es0eqti1sud9jk1k4aj41ja74.tmp
       
$name = $values['pud'][$i]['name']; // eg: dummy123.pdf
        // Set the $file as an object to pass it in the file_copy() function
       
$file = (object)array(
           
'uid' => 0,
           
'uri' => $path,
           
'filemime' => file_get_mimetype($path),
           
'status' => 1
       
);
       
// Copy the file using the name attribute, eg: public://path/to/your/folder/dummy123.pdf
       
if ($file = file_copy($file, $filepath . '/' . $name)) {
           
drupal_set_message('Success');
        }
        else {
           
drupal_set_message('Error', 'error');
        }
       
// Attach the file as an array to the new node
       
$node->field_album_photos[$node->language][$i] = (array)$file;
    }
   
// Save the node
   
node_save($node);
   
// Check if the node is successfully created
   
if ($node->nid) {
       
drupal_set_message('Node creation: ok');
    }
    else {
       
drupal_set_message('Node creation: error', 'error');
    }
}
?>

Status:Closed (fixed)» Active

The easiest way is to use file_save_upload().

EDIT:
My comment above is not entirely true. Better solution would be file_unmanaged_move(), file_uri_to_object() (part of file_entity but also implemented in plupload.module, so you don't need to install any dependencies) and/or file_move().

Status:Active» Fixed

Status:Fixed» Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.

Status:Active» Closed (fixed)