Jeric-X / SyncClipboard

跨平台剪贴板同步方案 / Cross-Platform Cipboard Syncing Solution
MIT License
1.43k stars 59 forks source link

win图片下载报错404/423 #15

Closed patialo closed 11 months ago

patialo commented 11 months ago

部署方式: nextcloud 27.1.1 测试端: ipados16 --- windows10

详细错误: 1.win复制,ipad获取 --同步文字,虽然能获取并粘贴,但是也有概率会出现上传错误通知 --同步图片,同样在ipad端能成功接收但有可能报错(以上报错偶发,尚不知道如何复现) 2.ipad复制,win获取 --文字没问题 --图片和文件完全无法接收(非常非常非常偶尔能成功) ,一直在 准备下载 和 已取消 之间横跳,在404与423之间横跳

image 以下是排错可能需要的: win客户端 image image

winlog(由于今天更新了新版,找不到log了,log取了昨天的)

[2023/09/27 10:09:43][UploadService.cs ][ 122] _isChangingLocal set to FALSE [2023/09/27 10:09:43][DownloadService.cs ][ 165] System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found). at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at SyncClipboard.Core.Utilities.Web.HttpClientExtention.GetFile(HttpClient httpClient, String url, String localFilePath, IProgress1 progress, Nullable1 cancellationToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\Utilities\Web\HttpClientExtention.cs:line 31 at SyncClipboard.Core.Clipboard.FileProfile.BeforeSetLocal(CancellationToken cancelToken, IProgress1 progress) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\Clipboard\Profile\FileProfile.cs:line 122 at SyncClipboard.Core.UserServices.DownloadService.SetRemoteProfileToLocal(Profile remoteProfile, CancellationToken cancelToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\UserServices\SyncService\DownloadService.cs:line 247 at SyncClipboard.Core.UserServices.DownloadService.PullLoop(CancellationToken cancelToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\UserServices\SyncService\DownloadService.cs:line 185 [2023/09/27 10:09:48][ClipboardFactoryBase.cs][ 55][ClipboardFactoryBase] ClipboardProfileDTO { File = Clipboard 2023年9月27日 10.09.jpeg, Clipboard = 23199d28cd5f4a975a6313b45bb03b89, Type = File } [2023/09/27 10:09:48][DownloadService.cs ][ 181][PULL] remote is {"File":"Clipboard 2023\u5E749\u670827\u65E5 10.09.jpeg","Clipboard":"23199d28cd5f4a975a6313b45bb03b89","Type":"Image"} [2023/09/27 10:09:48][ClipboardFactory.cs ][ 121][ClipboardFactory] Text: vi /var/www/html/.htaccess

[2023/09/27 10:09:48][UploadService.cs ][ 122] _isChangingLocal set to FALSE [2023/09/27 10:09:48][DownloadService.cs ][ 165] System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found). at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at SyncClipboard.Core.Utilities.Web.HttpClientExtention.GetFile(HttpClient httpClient, String url, String localFilePath, IProgress1 progress, Nullable1 cancellationToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\Utilities\Web\HttpClientExtention.cs:line 31 at SyncClipboard.Core.Clipboard.FileProfile.BeforeSetLocal(CancellationToken cancelToken, IProgress`1 progress) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\Clipboard\Profile\FileProfile.cs:line 122 at SyncClipboard.Core.UserServices.DownloadService.SetRemoteProfileToLocal(Profile remoteProfile, CancellationToken cancelToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\UserServices\SyncService\DownloadService.cs:line 247 at SyncClipboard.Core.UserServices.DownloadService.PullLoop(CancellationToken cancelToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\UserServices\SyncService\DownloadService.cs:line 185 [2023/09/27 10:09:52][ClipboardFactoryBase.cs][ 55][ClipboardFactoryBase] ClipboardProfileDTO { File = Clipboard 2023年9月27日 10.09.jpeg, Clipboard = 23199d28cd5f4a975a6313b45bb03b89, Type = File } [2023/09/27 10:09:52][DownloadService.cs ][ 181][PULL] remote is {"File":"Clipboard 2023\u5E749\u670827\u65E5 10.09.jpeg","Clipboard":"23199d28cd5f4a975a6313b45bb03b89","Type":"Image"} [2023/09/27 10:09:52][ClipboardFactory.cs ][ 121][ClipboardFactory] Text: vi /var/www/html/.htaccess

[2023/09/27 10:09:52][UploadService.cs ][ 122] _isChangingLocal set to FALSE [2023/09/27 10:09:52][DownloadService.cs ][ 165] System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found). at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at SyncClipboard.Core.Utilities.Web.HttpClientExtention.GetFile(HttpClient httpClient, String url, String localFilePath, IProgress1 progress, Nullable1 cancellationToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\Utilities\Web\HttpClientExtention.cs:line 31 at SyncClipboard.Core.Clipboard.FileProfile.BeforeSetLocal(CancellationToken cancelToken, IProgress`1 progress) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\Clipboard\Profile\FileProfile.cs:line 122 at SyncClipboard.Core.UserServices.DownloadService.SetRemoteProfileToLocal(Profile remoteProfile, CancellationToken cancelToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\UserServices\SyncService\DownloadService.cs:line 247 at SyncClipboard.Core.UserServices.DownloadService.PullLoop(CancellationToken cancelToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\UserServices\SyncService\DownloadService.cs:line 185 [2023/09/27 10:09:55][ClipboardFactoryBase.cs][ 55][ClipboardFactoryBase] ClipboardProfileDTO { File = Clipboard 2023年9月27日 10.09.jpeg, Clipboard = 23199d28cd5f4a975a6313b45bb03b89, Type = File } [2023/09/27 10:09:55][DownloadService.cs ][ 181][PULL] remote is {"File":"Clipboard 2023\u5E749\u670827\u65E5 10.09.jpeg","Clipboard":"23199d28cd5f4a975a6313b45bb03b89","Type":"Image"} [2023/09/27 10:09:55][ClipboardFactory.cs ][ 121][ClipboardFactory] Text: vi /var/www/html/.htaccess

[2023/09/27 10:09:55][UploadService.cs ][ 122] _isChangingLocal set to FALSE [2023/09/27 10:09:55][DownloadService.cs ][ 165] System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found). at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at SyncClipboard.Core.Utilities.Web.HttpClientExtention.GetFile(HttpClient httpClient, String url, String localFilePath, IProgress1 progress, Nullable1 cancellationToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\Utilities\Web\HttpClientExtention.cs:line 31 at SyncClipboard.Core.Clipboard.FileProfile.BeforeSetLocal(CancellationToken cancelToken, IProgress`1 progress) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\Clipboard\Profile\FileProfile.cs:line 122 at SyncClipboard.Core.UserServices.DownloadService.SetRemoteProfileToLocal(Profile remoteProfile, CancellationToken cancelToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\UserServices\SyncService\DownloadService.cs:line 247 at SyncClipboard.Core.UserServices.DownloadService.PullLoop(CancellationToken cancelToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\UserServices\SyncService\DownloadService.cs:line 185 [2023/09/27 10:09:58][ClipboardFactoryBase.cs][ 55][ClipboardFactoryBase] ClipboardProfileDTO { File = Clipboard 2023年9月27日 10.09.jpeg, Clipboard = 23199d28cd5f4a975a6313b45bb03b89, Type = File } [2023/09/27 10:09:58][DownloadService.cs ][ 181][PULL] remote is {"File":"Clipboard 2023\u5E749\u670827\u65E5 10.09.jpeg","Clipboard":"23199d28cd5f4a975a6313b45bb03b89","Type":"Image"} [2023/09/27 10:09:58][ClipboardFactory.cs ][ 121][ClipboardFactory] Text: vi /var/www/html/.htaccess

[2023/09/27 10:09:58][UploadService.cs ][ 122] _isChangingLocal set to FALSE [2023/09/27 10:09:58][DownloadService.cs ][ 165] System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found). at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at SyncClipboard.Core.Utilities.Web.HttpClientExtention.GetFile(HttpClient httpClient, String url, String localFilePath, IProgress1 progress, Nullable1 cancellationToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\Utilities\Web\HttpClientExtention.cs:line 31 at SyncClipboard.Core.Clipboard.FileProfile.BeforeSetLocal(CancellationToken cancelToken, IProgress1 progress) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\Clipboard\Profile\FileProfile.cs:line 122 at SyncClipboard.Core.UserServices.DownloadService.SetRemoteProfileToLocal(Profile remoteProfile, CancellationToken cancelToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\UserServices\SyncService\DownloadService.cs:line 247 at SyncClipboard.Core.UserServices.DownloadService.PullLoop(CancellationToken cancelToken) in D:\a\SyncClipboard\SyncClipboard\SyncClipboard.Core\UserServices\SyncService\DownloadService.cs:line 185 [2023/09/27 12:00:20][ClipboardFactory.cs ][ 121][ClipboardFactory] Text: Collabora Online

nextcloud json文件(目前的状态是从win截了一张图,上传上去了,并且ipad接收已成功) image

还有什么需要的请告诉我 想知道到底是哪里的问题,图片格式?nextcloud部署问题?

patialo commented 11 months ago

ipad上传图片,快捷指令的圈圈是转完了,但是nextcloud的文件夹里没有file这个文件夹,应该是被删除了,和新建这个文件夹之间有冲突 所以我关掉了win客户端的自动删除临时文件,果然就没问题了 希望优化一下这个删除和新建之间的逻辑

Jeric-X commented 11 months ago

1.win复制,ipad获取 --同步文字,虽然能获取并粘贴,但是也有概率会出现上传错误通知 --同步图片,同样在ipad端能成功接收但有可能报错(以上报错偶发,尚不知道如何复现)

这个还是麻烦你遇到问题的时候再关注一下如何复现的,或者遇到问题后传一下log 顺便问下你的nextcloud是部署在局域网还是广域网,我自己是在局域网,在延迟比较大的网络环境上确实可能有意想不到的问题

2.ipad复制,win获取 --文字没问题 --图片和文件完全无法接收(非常非常非常偶尔能成功) ,一直在 准备下载 和 已取消 之间横跳,在404与423之间横跳

这个确实是逻辑上的问题,win客户端删了文件夹但没有创建(自己上传文件倒是会创建),稍后后应该会发一个commit,如果需要可以从Github Actions下载

patialo commented 11 months ago

我是在广域网使用,因为我的nextcloud部署之后一直都没有在局域网内使用过,也不知道会不会是因为我的上传带宽过小,还跑着很多应用。所以一般在ipad上上传后win需要20-30秒才能下载完成,不知道相对于局域网来说是不是算是时间很长。

另外,我觉得不用删除和创建文件夹,就让文件夹一直存在,应该也可以节约那么一丝丝时间和性能吧,纯属个人见解

Jeric-X commented 11 months ago

局域网里通常是秒传的,当然这限制了使用范围,如果是国内机房应该速度也不会差太多

所以提供了一个开关,延迟高的话与服务器沟通确实要花很多时间,关了就好。 最新的commit应该修复了这个问题,不过关了开关的话也不影响了

patialo commented 11 months ago

局域网里通常是秒传的,当然这限制了使用范围,如果是国内机房应该速度也不会差太多

所以提供了一个开关,延迟高的话与服务器沟通确实要花很多时间,关了就好。 最新的commit应该修复了这个问题,不过关了开关的话也不影响了

我用的是自己的群晖,照理来说也不该很慢,但是我的影响因素比较多,我在外面所有设备都用都wireguard连回家,然后经过clash,再到nextcloud容器的,所以可能这里也损失了一部分性能 我对时间延迟不是很敏感,主要是能用(当然能优化一下那真真是太好了)现在其他的同步剪切板基本没啥我喜欢的解决方案,你这个实现算是很优质的了,很中意

另外,关于上传之后文件被重命名的问题,是否可以优化一下,不过我也想不到啥有效的能作为区分用的文件名设置方法,我也就不开issue了,作为未来展望吧,哈哈

Jeric-X commented 11 months ago

上传文件被重命名具体是怎么操作的呢,我应该是没有故意做过重命名的操作

patialo commented 11 months ago

上传文件被重命名具体是怎么操作的呢,我应该是没有故意做过重命名的操作

仔细看了一下,没问题了,文件是不会重命名的