2016-01-08 4 views
1

Je tente d'utiliser le confluence REST API pour joindre des fichiers à une page wiki. Je génère des graphiques assortis dans Excel en utilisant VBA et les enregistre en tant qu'images (actuellement en tant que png/jpeg). J'utilise ensuite example ici pour télécharger un fichier sur le wiki en pièce jointe. Cette méthode fonctionne bien pour les fichiers texte, mais lorsque j'essaie d'utiliser des images, je rencontre des problèmes. Plus précisément si je comprends bien le code:combiner des chaînes contenant NULL

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 & "--" 

tentatives pour ajouter des limites de chaîne à la représentation binaire du fichier par chaîne concaténer. Mon problème est que la représentation du .png contient NUL

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

qui se termine rapidement la chaîne, et alors vous perdez le reste du fichier et la limite de chaîne finale. Je crois que cela se produit avec toutes les fonctionnalités de la chaîne dans Excel.

Ma question est de savoir comment je devrais joindre les limites de la chaîne à mon fichier afin d'éviter ce problème?

Merci à l'avance :)

+0

Les chaînes VBA ne sont pas terminées par un caractère nul, ce qui signifie qu'elles peuvent contenir des caractères NULL, bien que celles-ci provoquent l'affichage tronqué de la chaîne dans certaines parties du débogueur. –

+0

Doh! Vous avez complètement raison, j'ai mal diagnostiqué le problème en raison de cette troncature. – chronos280

Répondre

1

Comme souligné Alex K. sur Je travaille sous une hypothèse erronée. La troncature est présente dans mon analyse du problème et non dans la chaîne elle-même.

Le problème était en fait dû à une erreur de ma part - de la webiste:

Une autre mise en garde est la fonction pvToByteArray. Il s'avère que la méthode send ne peut pas gérer les tableaux d'octets "byref", donc par exemple en passant baBuffer échouera, car VB6 configure le bit VT_BYREF du type du paramètre variant .

Ce fut ma mise en œuvre de cette partie du code qui était incorrect - cela a causé l'échec et le message d'erreur

500: flux terminé de façon inattendue

Après avoir corrigé ce la question semble résolu.

Merci encore Alex.