【问题标题】:After uploading a file to Drupal 7 via a form, how to get the file's path?通过表单将文件上传到 Drupal 7 后,如何获取文件的路径?
【发布时间】:2011-11-18 12:16:54
【问题描述】:

我有一个将文件上传到我的 Drupal 安装的表单。我想将该文件的路径存储在表中。如何获取最近上传文件的路径?我试过了

$f = file_load($form_state['values']['field_file']);
$f->uri;

但这不起作用。有什么线索吗?

【问题讨论】:

  • 当你说不工作时,到底发生了什么?
  • 好吧,你看我上传文件的时候,#upload 路径是:public://images/。然后将其上传到 Drupal 安装中的一个目录 (/sites/default/files/images/)。然后,为了将它插入数据库,我使用 $f->uri。但是当我将它从数据库中拉出来显示它时,img src 是 public://images/myimage.png - 这是一个断开的链接。我真正的问题是如何更改该部分以使其正确显示。对不起,如果我不清楚。
  • 啊,这是标准的 D7 内部 URL 结构。您需要使用file_create_url() 将其转换为可用的URL。发布了一个说明这一点的答案。

标签: php drupal fileapi


【解决方案1】:
$f = file_load($form_state['values']['field_file']);
$url = file_create_url($f->uri);

URI 是 Drupal 内部使用的 public://private:// 等。要转换它,请使用 file_create_url();理想情况下,您仍应存储 URI,然后在渲染时使用 file_create_url()。

【讨论】:

  • file_create_url 提供绝对 url。有没有办法获取相对url?
  • 当你说相对-相对于什么? docroot 还是 sites/default/files 文件夹?前者看file_build_uri,后者看file_uri_target
【解决方案2】:

尝试调试 $f 对象,看看是否发生错误:

$f = file_load($form_state['values']['field_file']);
echo '<pre>';
print_r($f);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 2017-05-31
    相关资源
    最近更新 更多