Skip to content

关于在上传文件至openlist时出现报错的问题 #1

@queenyn

Description

@queenyn

我在使用插件上传文件时几次三番都无法上传,最后在终端中手动执行命令,成功上传了。在让AI对比手动命令跟源代码中命令的区别时,AI返回的是:

问题就在上传这段里:OpenListClient.java (line 115)。

你手工成功的 curl 是把 File-Path 原样传给 OpenList:

-H 'File-Path: /Halo/post-contents/test_upload.txt'
但源码之前会先把整条路径做 URL 编码,再塞进请求头:

var encodedPath = URLEncoder.encode(remotePath, StandardCharsets.UTF_8)
.replace("+", "%20");
.header("File-Path", encodedPath);
这会把 /Halo/post-contents/test_upload.txt 变成类似 %2FHalo%2Fpost-contents%2Ftest_upload.txt。如果你的 OpenList /api/fs/put 期待的是原始路径而不是编码后的整串路径,就会直接导致上传失败。这和你手工测试结果是对得上的。

AI更改的是这个文件下的代码:plugin-openlist-1.1.2/src/main/java/run/halo/openlist/OpenListClient.java
我手动执行的命令是:先curl -i -X POST 'http://……/api/auth/login' -H 'Content-Type: application/json' --data '{"username":"……","password":"……"}'获取token,然后执行curl -i -X PUT 'http://……/api/fs/put' -H 'Authorization: ……' -H 'File-Path: /Halo/post-contents/test_upload.txt' -H 'Content-Length: 10' --data-binary @test.txt

麻烦作者看看这样做会不会有问题。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions