johnstephens Posted June 16, 2021 Share Posted June 16, 2021 Hi! I want to import files into a specific ProcessWire page that has a "files" field. I wrote this snippet and it successfully copies the files to the correct directory under /site/assets: const PATH_PREFIX = '/path/to/files/'; $parent = pages()->get('/my-files-page'); $parent->of(false); $parent->filesManager->importFiles(PATH_PREFIX); $parent->save(); But I also want the files to show up in ProcessWire’s admin panel for that page, linked to the "files" field. Having done this with images, comments, and page reference fields, I know that it involves iterating through the files with code like this: $newFile = new Pagefile(); $parent->files->add($newFile); …but I can’t figure out how to set the file information (name, description, extension, etc.), nor how to associate it with the file imported into the assets directory. Luckily, I do have all the files referenced in a database, which I can access like so: $files = database()->query(" SELECT id, filename, title, category, permissions, description, downloads, status, modified, created, size, author FROM txp_file WHERE 1 ORDER BY id "); foreach ($files as $file) { // PROFIT! } But it’s not clear to me how to both import the file into the files field AND link the file’s metadata. I’m sure that I am overlooking something simple, but I’m grateful for any guidance you might offer. Thank you! Link to comment Share on other sites More sharing options...
bernhard Posted June 17, 2021 Share Posted June 17, 2021 <?php $page->of(false); $page->yourfield->add("https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Processwire_logo.svg/2560px-Processwire_logo.svg.png"); $file = $page->getUnformatted('yourfield')->last(); $file->description = 'hello world'; $page->save(); getUnformatted ensures that you get the files as array and then retrieve the last file ? 3 Link to comment Share on other sites More sharing options...
johnstephens Posted June 17, 2021 Author Share Posted June 17, 2021 Excellent, thank you @bernhard! That was exactly what I needed. I’m glad I didn’t have to manually like them to files imported in bulk with filesManager->importFiles(). 1 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now