Php Laravel文件系统和ftp

Php Laravel文件系统和ftp,php,laravel,ftp,filesystems,Php,Laravel,Ftp,Filesystems,我在使用Laravel的文件系统时遇到了困难。我试图在控制器中生成、保存和传输xml文件 除了ftp传输之外,其他一切都可以工作。我怀疑这是因为我无法在sendFilToNCS($fileName)函数中获得新xml文件的正确路径。我收到这个错误: ErrorException ftp_put(/storage/1584533245.xml):无法打开 流:没有这样的文件或目录 希望能从拉雷维尔的专家那里得到som的帮助。你好 class ExportController extends Con

我在使用Laravel的文件系统时遇到了困难。我试图在控制器中生成、保存和传输xml文件

除了ftp传输之外,其他一切都可以工作。我怀疑这是因为我无法在sendFilToNCS($fileName)函数中获得新xml文件的正确路径。我收到这个错误:

ErrorException ftp_put(/storage/1584533245.xml):无法打开 流:没有这样的文件或目录

希望能从拉雷维尔的专家那里得到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;

    }
}

不做任何更改的Storage facade会将您的文件放入
存储/app
。我看不出以后移动文件有什么意义。您可以将文件放入
存储/app/xml
中,以便于查看。这是可以这样得到的

$fileName = '/xml/' . $fileName;
Storage::put($fileName, $content);
当您想要获取文件路径时,storage facade有一个帮助器。它将返回绝对路径,您需要使用
ftp\u put()

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

ftp_put($ftp_conn, $fileName, $path, FTP_ASCII)
这段代码中有很多方面,但这似乎是最明显的错误,我不确定它是否能帮助您完成整个过程,但应该能帮助您进入过程的下一步

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