首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LARAVEL如何使用Laravel将文件从本地(公共)传输到FTP

问LARAVEL如何使用Laravel将文件从本地(公共)传输到FTP
EN

Stack Overflow用户
提问于 2017-07-14 10:17:18
回答 2查看 12.8K关注 0票数 0

我想问一个问题,有谁知道如何将数据从本地/公共传输到ftp,我使用的是存储类https://laravel.com/docs/5.4/filesystem

这是我的代码

代码语言:javascript
复制
$file_local = Storage::disk('local')->get('public/uploads/ftp/file.pdf');
$file_ftp = Storage::disk('ftp')->put('/file.pdf', $file_local');

但是我的代码不工作,当我在ftp上打开文件时,文件被破坏了,然后我用记事本打开它,在文件内部,内容是'public/uploads/ftp/file.pdf‘我的意思是内容应该在本地,而不是我写的内容,

任何人知道如何从本地文件传输到ftp,很抱歉我的英文不好,谢谢你的回答。

EN

回答 2

Stack Overflow用户

发布于 2019-03-05 17:47:58

首先,您应该知道FTP主机、FTP用户名和FTP密码的详细信息。准备好详细信息后,打开.env文件并添加详细信息,如下所示:

代码语言:javascript
复制
    FTP_HOST=YOUR_FTP_HOST_VALUE
    FTP_USERNAME=YOUR_FTP_USERNAME_VALUE
    FTP_PASSWORD=YOUR_FTP_PASSWORD_VALUE

请确保将占位符替换为实际值。接下来,打开config/filesystems.php文件并将‘ftp’配置添加到‘disks’阵列。

代码语言:javascript
复制
<?php
return [
    ......
    'disks' => [
        ......
        'ftp' => [
            'driver' => 'ftp',
            'host' => env('FTP_HOST'),
            'username' => env('FTP_USERNAME'),
            'password' => env('FTP_PASSWORD'),
            'root' => 'DIR_PATH_TO_WHERE_IMAGE_STORE' // for example: /var/www/html/dev/images
        ],
    ],

];

将DIR_PATH_TO_WHERE_IMAGE_STORE替换为您需要存储图像的实际路径。例如,如果我们有一个名为‘images’的文件夹,这个文件夹的路径是/var/www/html/dev/images,那么这个路径将作为上面数组中‘root’的值。

为了通过FTP上传文件,我们需要一个表单,用户可以在其中提交图像。在视图文件中添加以下代码。

代码语言:javascript
复制
<form action="{{ url('PASS_ACTION_URL_HERE') }}" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="exampleInputFile">File input</label>
        <input type="file" name="profile_image" id="exampleInputFile" multiple />
    </div>
    {{ csrf_field() }}
    <button type="submit" class="btn btn-default">Submit</button>
</form>

您应该将PASS_ACTION_URL_HERE替换为您的实际路由。当我们使用Laravel Storage上传文件时,用户需要将Facade添加到控制器文件中,如下所示:

代码语言:javascript
复制
public function store(Request $request)
{
    if($request->hasFile('profile_image')) {

        //get filename with extension
        $filenamewithextension = $request->file('profile_image')->getClientOriginalName();

        //get filename without extension
        $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);

        //get file extension
        $extension = $request->file('profile_image')->getClientOriginalExtension();

        //filename to store
        $filenametostore = $filename.'_'.uniqid().'.'.$extension;

        //Upload File to external server
        Storage::disk('ftp')->put($filenametostore, fopen($request->file('profile_image'), 'r+'));

        //Store $filenametostore in the database
    }

    return redirect('images')->with('status', "Image uploaded successfully.");
}

‘profile_image’是我们输入的文件的名称。我们构建文件的唯一名称,然后将其上传到外部服务器。注意,我们使用的是Storage::disk(‘ftp’)方法。此函数将我们的文件存储到配置中定义的路径。用户应将值‘$filenametostore’存储在数据库中。

票数 4
EN

Stack Overflow用户

发布于 2017-09-28 23:04:57

代码语言:javascript
复制
'local' => [
    'driver' => 'local',
    'root'   => storage_path().'/app',
],

如果您使用本地磁盘(config/filesystems.php),除非您更改了默认设置,否则您将在'storage/app‘而不是公共文件夹中查找。所以:

代码语言:javascript
复制
$file_local = Storage::disk('local')->get('file.pdf');

将查找“Storage/App/file.pdf”

确保您的pdf在该文件夹中,并尝试执行以下操作:

代码语言:javascript
复制
$file_local = Storage::disk('local')->get('file.pdf');
$file_ftp = Storage::disk('ftp')->put('file.pdf', $file_local);

编辑:另外,我注意到在你最初的帖子中,第二行代码中有“$file_local之后的流氓”;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45093582

复制
相关文章

相似问题

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