首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件迁移问题

文件迁移问题
EN

Drupal用户
提问于 2019-07-06 07:12:07
回答 2查看 743关注 0票数 0

我正在学习教程,介绍如何将文件从D7迁移到D8。

我有具有以下yml配置的迁移设置:

代码语言:javascript
复制
uuid: a685a4e0-1022-4bf2-a787-f6f1bef587ea
langcode: en
status: true
dependencies: {  }
id: d8_files
class: null
field_plugin_method: null
cck_plugin_method: null
migration_tags:
  - 'Drupal 7'
  - Content
migration_group: D7-TO-D8
label: 'D7 to 8 Public files'
source:
  plugin: d7_file
  scheme: public
  constants:
    # source_base_path: 'sites/default/files/'
    # source_base_path: '/var/www/d8/sites/default/files/'
    # source_base_path: '/var/www/d8/sites/default/files/d7_download/page/files/'
    # source_base_path: '/sites/default/files/d7_download/page/files/'
    # source_base_path: '/var/www/d7/sites/default/files/page/files/'
    source_base_path: '/var/www/d7/sites/default/files/'
process:
  fid: fid
  filename: filename
  source_full_path:
    -
      plugin: concat
      delimiter: /
      source:
        - constants/source_base_path
        - filepath
    -
      plugin: urlencode
  uri:
    plugin: file_copy
    source:
      - '@source_full_path'
      - uri
  filemime: filemime
  status: status
  created: timestamp
  changed: timestamp
  uid: uid
destination:
  plugin: 'entity:file'
migration_dependencies: null

迁移-状态表示已在D7数据库中检测到超过2000个文件可供迁移,但当我尝试迁移时,它只报告0迁移的内容和错误,如下所示:

我的猜测是,迁移不知道在哪里找到图像,但是我已经尝试过通过更改source_base_path值来找到这些映像的各种路径,但是仍然没有迁移的文件。

有人能帮忙吗?

更新:

我在阻止移民的问题上发现了更多。

当我检查d8_files迁移的日志时,我发现了如下消息:

代码语言:javascript
复制
File'/var/www/d8/sites/default/files/d7_download//sites/default/files/field/image/imagefield_OvRwVF.jpeg' does not exist

问题在于模块如何创建文件url。

在我的d8_file.yml的源代码部分,我设置了以下内容:

代码语言:javascript
复制
source_base_path: '/var/www/d8/sites/default/files/d7_download/'

..。这是指向包含我希望迁移的文件的目录的绝对路径。迁移模块将/sites/default/files连接到路径的末尾,这使其出错。我尝试过通过在../../设置中使用source_base_path导航目录路径,但是它不起作用.只是被看作是一根绳子。

,有人能告诉我怎么改正吗?

在流程部分,我看到了以下内容:

代码语言:javascript
复制
process:
  fid: fid
  filename: filename
  source_full_path:
    -
      plugin: concat
      delimiter: /
      source:
        - constants/source_base_path
        - filepath

我怀疑问题就在于减值问题。但是,我不知道它还有什么价值。

有人能建议系统在哪里找到任何插件上的此类信息吗?

EN

回答 2

Drupal用户

发布于 2021-11-02 11:37:11

您可以在Drupal.org:https://www.drupal.org/project/drupal/issues/3123350上找到当前的问题

作为解决办法,您可以在源数据库副本中运行此操作以删除前缀:

代码语言:javascript
复制
DELETE FROM variable WHERE name="file_private_path";

有关进一步讨论和背景情况,请参阅该问题。

票数 1
EN

Drupal用户

发布于 2021-11-02 14:01:49

如果需要在" public ://“和" private ://”等文件路径中替换公共或私有文件的完整路径,而不只是将文件路径作为源,那么在此之前进行必要的替换:

代码语言:javascript
复制
  source_public_absolute_path:
    -
      plugin: str_replace
      source: uri
      search: 'public://'
      replace: 'sites/default/files/'
  source_full_path:
    -
      plugin: concat
      delimiter: /
      source:
        - constants/source_base_path
        - '@source_public_absolute_path'
票数 1
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/283175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档