halo icon indicating copy to clipboard operation
halo copied to clipboard

使用alist存储策略在文章中上传图片报错

Open MrArlong opened this issue 1 year ago • 4 comments

前置条件

  • [x] 已经在 issues 列表中搜索了相关问题。
  • [x] 这是 Halo 项目本身存在的问题,如果是非项目本身的问题(如:安装部署问题),建议在 Discussions 提交。
  • [x] 已经尝试过停用所有的插件,排除是插件导致的问题。
  • [x] 如果是插件和主题的问题,请在对应的插件和主题仓库提交。

系统信息

使用的哪种方式运行?

Docker

发生了什么?

附件库里面增加存储策略alist,增加的uc网盘,在附件库进行上传为正常 在设置/文章设置/配置附件存储策略改成默认alist存储策略 Image 在文章中选择上传图片或者直接从剪切板复制图片均会报错 Image

Image

复现步骤

No response

相关日志输出


附加信息

No response

MrArlong avatar Dec 05 '24 07:12 MrArlong

ping @Roozenlz @JohnNiang

ruibaby avatar Dec 10 '24 03:12 ruibaby

我用的阿里云盘,无法复现,先更新新版本再试试

Roozenlz avatar Dec 10 '24 05:12 Roozenlz

halo 最新版本2.20.13在文章页使用alist存储库上传同楼主一样报错,在附件页面可以正常上传到alist存储,alist的存储为webdav挂载路径。

2025-01-17T01:08:18.594+08:00 ERROR 7 --- [run.halo.app.core.attachment.reconciler.AttachmentReconciler-t-1] r.h.a.e.controller.DefaultController     : Reconciler in run.halo.app.core.attachment.reconciler.AttachmentReconciler-worker-1 aborted with an error, re-enqueuing...

org.springframework.web.server.ServerWebInputException: 400 BAD_REQUEST "Failed to get file info: object not found"
	at run.halo.alist.endpoint.AListAttachmentHandler.lambda$getFile$24(AListAttachmentHandler.java:325) ~[na:na]
	at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:132) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:245) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:305) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:158) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2097) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:145) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.7.0.jar:3.7.0]
	at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:413) ~[reactor-netty-core-1.2.0.jar:1.2.0]
	at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:455) ~[reactor-netty-core-1.2.0.jar:1.2.0]
	at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:509) ~[reactor-netty-core-1.2.0.jar:1.2.0]
	at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:817) ~[reactor-netty-http-1.2.0.jar:1.2.0]
	at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:115) ~[reactor-netty-core-1.2.0.jar:1.2.0]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:289) ~[netty-handler-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[netty-codec-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) ~[netty-codec-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868) ~[netty-transport-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799) ~[netty-transport-classes-epoll-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:501) ~[netty-transport-classes-epoll-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:399) ~[netty-transport-classes-epoll-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.115.Final.jar:4.1.115.Final]
	at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
	Suppressed: java.lang.Exception: #block terminated with an error
		at reactor.core.publisher.BlockingOptionalMonoSubscriber.blockingGet(BlockingOptionalMonoSubscriber.java:129) ~[reactor-core-3.7.0.jar:3.7.0]
		at reactor.core.publisher.Mono.blockOptional(Mono.java:1831) ~[reactor-core-3.7.0.jar:3.7.0]
		at run.halo.app.core.attachment.reconciler.AttachmentReconciler.lambda$reconcile$1(AttachmentReconciler.java:62) ~[classes/:2.20.13]
		at java.base/java.util.Optional.ifPresent(Unknown Source) ~[na:na]
		at run.halo.app.core.attachment.reconciler.AttachmentReconciler.reconcile(AttachmentReconciler.java:45) ~[classes/:2.20.13]
		at run.halo.app.core.attachment.reconciler.AttachmentReconciler.reconcile(AttachmentReconciler.java:32) ~[classes/:2.20.13]
		at run.halo.app.extension.controller.DefaultController$Worker.run(DefaultController.java:163) ~[api-2.20.13.jar:na]
		at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[na:na]
		at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[na:na]
		at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
		at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
		... 1 common frames omitted

zhangbaiquan avatar Jan 16 '25 17:01 zhangbaiquan

我在本地也无法复现,建议将 Halo 和插件都升级到最新,不太确定 https://github.com/halo-sigs/plugin-alist/pull/33 是否修复了这个问题。

JohnNiang avatar Mar 31 '25 10:03 JohnNiang