【问题标题】:Upload file in database with Laravel 5使用 Laravel 5 在数据库中上传文件
【发布时间】:2018-09-05 17:16:32
【问题描述】:

我正在我的本地主机(在我的本地服务器)中使用 Laravel 开发一个网站,并且在我的项目的某些部分中,我需要上传一些 XML 文件以使用 phpexcel api 生成一个 Excel 文件。我的工作是这样进行的:

1 - 我使用表单创建 xml 文件并将它们存储在我的项目的公共目录中

2- 当我想上传和使用这些 xml 文件时,我只是从输入中获取名称并将它们添加到 url 以打开本地存储的文件(类似这样:)

$xml_tmu=simplexml_load_file($url) or die("Error: Cannot create object");

所以我的问题是:当我将我的网站上传到服务器时,我是否需要将我的 xml 文件存储在数据库中以便之后可以使用它们,或者它们将在服务器的公共目录中创建(就像我本地服务器上的一样)?如果没有,最好的解决方案是什么?

【问题讨论】:

  • 如何存储数据(文件/数据库)是一个单独的问题。就个人而言,我不会将上传文件放在公共目录中,而是制作一个控制器来获取文件名并使用fopen(),而不是对同一台服务器执行 HTTP 请求,这是毫无意义和不必要的。然后您可以将内容传递给您的简单 xml。另外,DOMDocument 比简单的 xml 好多了,看看吧!
  • 我认为在这里您不需要上传 xml 文件,因为您已经将它们转换为 excel 文件。并且 Dp 不上传公共目录中的文件
  • 我知道现在我不必存储在公共目录中,但我需要保存我的 xml 文件以在生成 excel 文件后使用它们,所以好吗?最好的方法是什么?
  • 好吧,Jaffery way 在本集中定义了一些关于文件上传的最佳实践,您可以观看:laracasts.com/series/whats-new-in-laravel-5-3/episodes/12

标签: php mysql laravel laravel-5 input


【解决方案1】:

如果您不想使用数据库在服务器中存储文件,则不需要使用数据库。

如果你的远程服务器上运行了一个普通的 Laravel 应用程序,你的应用程序目录的根目录中可能有一个可写的 storage 文件夹,所以你可能可以这样做

$xmlFilename = 'whatevernameyouneedhere.xml';

$xml_tmu = simplexml_load_file($url) or die("Error: Cannot create object");

Storage::put($xmlFilename, $xml_tmu);

然后你可以用它取回

$xml = Storage::get($xmlFilename);

它可以在本地或远程工作,当然,如果您的存储文件夹对网络服务器用户(nginx、apache2、www-data....)是可写的

【讨论】:

    猜你喜欢
    • 2015-10-01
    • 2016-08-11
    • 2016-04-18
    • 2016-03-14
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2017-04-24
    相关资源
    最近更新 更多