如何使用 Laravel 文件系统获得 FTP 上传百分比

How to get FTP upload percentage with Laravel File System

所以我有像 wetransfer.com 这样的应用程序。

所以我想看看有多少文件字节被上传到 ftp 磁盘

这是一个示例代码:

Storage::disk('ftp')->put('/path/', $file)

方案:

(client file) -> (ftp)

有什么方法可以获取服务器的上传百分比以及上传到FTP的字节数。

我在前端使用 React。这是我的代码

  const onDrop = useCallback(acceptedFiles => {
        setShowUpload(false);
        const uploading = acceptedFiles.map(file => {
            const formData = new FormData();
            formData.append("cloudesk_upload[]", file);
            const xhr = new XMLHttpRequest();
            xhr.upload.onprogress = event => {
                const percentage = parseInt((event.loaded / event.total) * 100);
                setUploadPercentages(percentage);
            };
            xhr.onreadystatechange = () => {
                if (xhr.readyState !== 4) return;
                if (xhr.status !== 200) {
                    console.log('error'); // Handle error here
                }
                console.log('success'); // Handle success here
            };

            setTimeout(() => {
                xhr.open('POST', `${window.API_URL}/upload`, true);
                xhr.send(formData);
            }, 3000)
        });
    }, [])

但这并不像我预期的那样有效

我认为可以做到的方法是:

(client) -> (temp file on the first server) -> (ftp) 然后获取本地文件和 Ftp 文件之间的字节。

有什么简单又不脏的方法吗?

了解您的问题后,您可以比较上传文件和存储在 ftp 服务器中的文件的文件大小。

此功能用于演示目的。

public function store(Request $request)
{
  $file= Input::file('file');
  $clientFileSize=$request->file('file')->getSize();
  Storage::disk('ftp')->put('/path/', $file);
  $ftpFileSize=Storage::disk('ftp')->size('/path/filename');
  $comparesize=$clientFileSize-$ftpFileSize
  
}