I have a directory with PDF files and I have 45 nodes of content type Download. I have to migrate each PDF file to specific node. All PDF file names I read from a CSV. Before these PDF files, I had to migrate title (drupal default field) , external title and a checkbox field to each node. I did it successfully, but migrating PDF files is I guess different and a lot more difficult.
Here is my code for migrating PDF files
id: program_files
label: Migrating files for Download content type.
migration_tags:
- file
source:
plugin: csv
path: 'modules/custom/csv_migration/sources/downloads.csv'
header_row_count: 1
ids: (constants/file_source_uri)
keys:
- PLACEMENTPATH
fields:
0:
name: field_document_file
label: 'Download file'
constants:
file_source_uri: (public://import/program)
file_dest_uri: ('public://download/files')
destination:
plugin: 'entity:file'
process:
file_source:
-
plugin: concat
delimiter: /
source: (constants/file_source_uri, PLACEMENTPATH)
file_dest:
-
plugin: concat
delimiter: /
source: (constants/file_dest_uri, PLACEMENTPATH)
filename: PLACEMENTPATH
uri:
-
plugin: file_copy
source:
- '@file_source'
- '@file_dest'
Once I run command drush ms it displays me migration id (program_files), but after that when I run drush mim program_files, it throws the error like this.
In Connection.php line 744:
Placeholders must have a trailing () if they are to be expanded with an array of values.
The thing I notice once I start drush mim program_files is that directory download is created in sites/default/files, since I defined that in YML, but no files are transfered.
What am I doing wrong? Please, help.