1

我正在尝试使用confluence REST API将文件附加到 wiki 页面。我使用 VBA 在 excel 中生成各种图表并将它们保存为图像(当前为 png/jpeg)。

然后,我使用此处的示例将文件作为附件上传到 wiki。这种方法适用于文本文件,但是当我尝试使用图像时,我遇到了一些问题。具体来说,据我了解,代码:

sPostData = "--" & STR_BOUNDARY & vbCrLf & _
    "Content-Disposition: form-data; name=""uploadfile""; filename=""" & Mid$(sFileName, InStrRev(sFileName, "\") + 1) & """" & vbCrLf & _
    "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & _
    sPostData & vbCrLf & _
    "--" & STR_BOUNDARY & "--"

尝试通过连接字符串将字符串边界添加到文件的二进制表示。我的问题是 png 的表示包含 NUL

‰PNG
SUB
NULNULNUL
IHDRNULNULEOT+NULNULSTXSYNBSETXNULNULSOH>&Ǽ      ...etc...

这会立即终止字符串,因此您会丢失文件的其余部分和最终的字符串边界。我相信这发生在 excel 中的所有字符串功能上。

我的问题是我应该如何将字符串边界附加到我的文件以避免这个问题?

提前致谢 :)

4

1 回答 1

1

正如 Alex K. 指出的那样,我一直在错误的假设下工作。我对问题的分析中存在截断,而不是实际字符串。

问题实际上是由于我的一个错误 - 来自网站:

另一个警告是 pvToByteArray 函数。事实证明,send 方法无法处理“byref”字节数组,因此例如传递 baBuffer 将失败,因为 VB6 设置了变体参数类型的 VT_BYREF 位。

是我对这部分代码的实现不正确 - 这导致了失败和错误消息

500:流意外结束

更正此问题后,问题似乎已解决。

再次感谢亚历克斯。

于 2016-01-08T11:33:33.757 回答