Laravel文件系统和ftp

问题描述 投票:1回答:1

我对Laravel的文件系统不满意。我正在尝试在控制器中生成,保存和传输xml文件。

除了FTP传输外,其他所有功能都可以。我怀疑这是因为我无法在sendFilToNCS($ fileName)函数中获取新xml文件的正确路径。我收到此错误:

ErrorException ftp_put(/storage/1584533245.xml):打开失败流:无此文件或目录

希望从Laravel专家那里获得Som的帮助。美好的一天。

class ExportController extends Controller
{

    public function __construct(){
        $this->middleware('auth:admin');
    }

    public function index($id){

        $foromtale = Foromtale::find($id);
        $data = new NCSNote($foromtale);

        $xml = View::make('xmlTemplate')->with('view', $data);

        $xmlDoc = simplexml_load_string($xml);

        return $this->writeXml($xmlDoc);
    }

    public function writeXml($content){

        $fileName = time().".xml";
        //$content->saveXML($fileName);
        Storage::put($fileName, $content);
        Storage::move($fileName, 'storage/'.$fileName);

        return $this->sendFilToNCS($fileName);           

    }

    private function sendFilToNCS($fileName)
    {
        $content = Storage::disk('local')->url($fileName);
        $ftp_server = "ftp.host.dk";
        $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
        $login = ftp_login($ftp_conn, "username", "xXxxXX");

        // upload file
        if (ftp_put($ftp_conn, $fileName, $content, FTP_ASCII))
          {
          // close connection
          ftp_close($ftp_conn);

          return true;
        }
        // close connection
        ftp_close($ftp_conn);
        return false;

    }
}
php laravel ftp filesystems
1个回答
1
投票

没有任何更改的Storage Facade将把您的文件放在storage/app中。我看不出后来移动文件的意义。想像一下,可以将文件放在storage/app/xml中,以方便查看。可以这样获得。

$fileName = '/xml/' . $fileName;
Storage::put($fileName, $content);

[当您要获取文件路径时,Storage Facade会为此提供帮助。这将返回绝对路径,您需要ftp_put()

$path = Storage::path($fileName)

似乎您使用的是ftp_put()错误。第三个参数是文件的路径,请使用新定义的$path属性。

ftp_put($ftp_conn, $fileName, $path, FTP_ASCII)

此代码中有很多方面,但这似乎是最明显的错误,我不确定它会完全帮助您,但应该使您进入过程的下一步。

© www.soinside.com 2019 - 2024. All rights reserved.