Jump to content
Alexander

Random Images file name

Recommended Posts

Hello,

I'm trying to change all upload image files names for the random names.

So I put in Pageimage.php this lines:

$rand = substr(md5(microtime()),rand(0,26),5);
$basename = basename($rand, "." . $this->ext()); 		// i.e. myfile

But as a results I got a lot of random filenames during each page loading.

Please advise what do I miss?

Thanks,

AP

Share this post


Link to post
Share on other sites

Alexander,

I am not sure what you are trying to do. One thing am sure of, is that it is not a good idea to edit core files. You can manipulate output/input in PW using hooks and/or modules without having to hack the core in most cases :D

Share this post


Link to post
Share on other sites

Thanks a lot, Kongondo.

That seems to be right. I'll think twice how to manage it in a deferent way.

For example, if I upload "Martin_Johnson_House,_SIO,_La_Jolla_Shores_-_at_sunset_pano.jpg" I get "Martin_Johnson_House,_SIO,_La_Jolla_Shores_-_at_sunset_pano.640x480.jpg" and I would like to get "rndmname.640x480.jpg"

Share this post


Link to post
Share on other sites

Do you want to rename the original files on upload?
 
If yes, here are some pieces of code I have collected in the forum from Soma. This could be a starting point for a module:

<?php
class ImageRenameOnUpload extends WireData implements Module {

    public static function getModuleInfo() {
        return array(
            'title' => 'ImageRenameOnUpload',
            'version' => 100,
            'summary' => '',
            'href' => '',
            'singular' => true,
            'autoload' => true
            );
    }

    public function init() {
        $this->addHookBefore('InputfieldFile::fileAdded', $this, 'renameImage');
    }

    public function renameImage($event) {
        $inputfield = $event->object;
        if($inputfield->name != 'images') return;      // we assume images field !! name of the field is: images !! otherwise change it

        $p = $inputfield->value['page'];               // get the page
        $image = $event->argumentsByName("pagefile");  // get the image
        $ext = $image->ext;                            // get extension
        $newBasename = 'my_random_name_' . time();     // create your random name here !!

        $p->images->trackChange("basename");           // prepare page to keep track for changes on basename
        //$image->removeVariations();                  // isn't needed here, I think
        $image->rename($newBasename . '.' . $ext);     // rename the image
        $p->save('images');                            // save the page
    }
}

As of this code will work, you have to add something that refreshs your admin page at the end, because upload is via ajax request and the label presenting your imagefilename isn't updated now.

But should be a good starting point.

EDIT: Have changed  addHookAfter  to  addHookBefore and then it all works, including updating the label with filename!

Don't know really why in detail. Just have found out by trying! :)

Edited by horst
  • Like 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By horst
      Hi, on a site I want to disable access to original images and only allow to access thumbnails and watermarked image variations.
      EDIT:
      A good solution for protecting original images can be found a bit down in this thread:
       
      Old content of this initial post:
       
    • By Guy Incognito
      I seem to be running into a repeated fatal error in a fresh PW install version 3.0.148. I can't quite put my finger on the pattern but it seems to be around deleting image fields or removing images from certain image fields.
      This is the trace from the log generated by trying to save a page and delete an image from an image field:
      Fatal Error: Uncaught Error: Cannot access protected property Pageimage::$original in /wire/core/PageimageVariations.php:256 Stack trace: 1. /wire/core/Pageimage.php(1327): PageimageVariations->getInfo() 2. /wire/core/Wire.php(386): Pageimage->___isVariation() 3. /wire/core/WireHooks.php(823): Wire->_callMethod() 4. /wire/core/Wire.php(450): WireHooks->runHooks() 5. /wire/core/Pageimage.php(1369): Wire->__call() 6. /wire/core/Pageimage.php(399): Pageimage->getOriginal() 7. /wire/core/WireData.php(333): Pageimage->get() 8. /wire/core/PageimageVariations.php(256): Pro Line 256 of /wire/core/PageimageVariations.php Earlier in the day I was experimenting with custom fields for images for the first time and kept running into this error, thinking it was me using this feature wrong and not having time to read up I deleted the custom image fields template and went about my business. So now I don't know if I triggered an issue or whether it was never related to the custom image fields in the first place?
      Any ideas?
    • By humanafterall
      I'm using some Custom fields for images: 
      https://processwire.com/blog/posts/pw-3.0.142/#custom-fields-for-files-images

      When I save the page, and return the fields are blank. When I re-add the text to the fields and save again then the fields save as expected.

      I know this is stated as being quite experimental but it's super useful feature I'd love to get working correctly.
      I have fields that are CKEditor fields but have overidden this on the image specific template. I've also tried it with regular text fields and I get the same bug.
      (currently using Processwire 3.0.155)
      **UPDATE**
      I've found this issue is specific to editing on pages using the PageTable fieldtype. The fields are not saving when I save the page in the PageTable.
    • By Robin S
      Displays image tags overlaid on the thumbnail using customisable colours. This makes it easier to see which images have which tags without needing to open the edit pane for individual images or changing to the list view.
      Screenshot

      Usage
      Enable tags for one or more image fields. Install the Image Thumbnail Tags module. Optionally configure colours for any of your tags.
       
      https://github.com/Toutouwai/ImageThumbnailTags
      https://modules.processwire.com/modules/image-thumbnail-tags/
    • By EyeDentify
      Hello dear PW gurus.

      I have stumbled over a strange error that i all of sudden got when trying to upload an image to a images field on a page.
      There where images allready stored in the field that i wanted to keep, but during the upload the error apear and after that all images are gone from the field and i can´t upload any, i just get the error every time.
      I am running ProcessWire 3.0.153 dev.
      Update:
      After looking in the assets folder i find the folder for the page and the image files seems to be there including the ones i tried to upload when the error occured.
      But they don´t show up in the images field in the page editor.
       
      The error reported:
       
      SQLSTATE[01000]: Warning: 1265 Data truncated for column 'ratio' at row 1 And here is a screenshot of the event:

      The TracyDebugger Error reporting:

      I hope you fine folks could point me in a direction.
      But it seems our old pal set_time_limit() is back.

      Regards, EyeDentify
×
×
  • Create New...