vb .net base64 неправильно кодирует - PullRequest
0 голосов
/ 24 января 2019

Я просмотрел все, и ни одна из найденных проблем не устранила мою проблему.

У меня есть программа, которая отправляет строки json на сервер.Я загружаю и скачиваю файлы.Они находятся между клиентом vb и сервером php.Я могу просто перейти с сервера на клиент, но когда я пытаюсь отправить файл на сервер, base64 неверен.

Вот мой код на стороне vb.

Dim bytes As Byte()
bytes = System.IO.File.ReadAllBytes(filename)

Dim base64String As String = Convert.ToBase64String(bytes)  

Если я отправляю текстовый файл и декодирую его вручную, 80% файла там, тогда он просто уходит в мусор.Есть некоторые другие настройки для convert.tobase64String, что я пропускаю?

1009 * Здесь это base64 внутри * JSON 1010 *

VGhpcyBrbm93bGVkZ2UgYmFzZSBhcnRpY2xlIHNob3VsZCBoYXZlIHRoZSBtYWludGVuYW5jZSBwbGFuIHRoYXQgRGF2aWQgaXMgcmVmZXJlbmNpbmcuDQoNCmh0dHBzOi8vc3VwcG9ydGNlbnRlci5lbWRzLmNvbS9hcnRpY2xlcy9Ucm91Ymxlc2hvb3RpbmcvSG93LWRvLUktcmVpbmRleC1teS1Tb2x1dGlvbi1TZXJpZXMtODAtZGF0YWJhc2Umcz1yZWluZGV4JTIwJnA9MSANCg0KSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBhYm91dCBpdCBwbGVhc2UgZmVlbCBmcmVlIHRvIGdpdmUgdXMgYSBjYWxsIGF0IHRoZSBJVCBkZXBhcnRtZW50ICgxLTgwMC01NjUtNTU2NCBvcHRpb24gMikNCg0KLUFydA0KDQogICAgRGVjZW1iZXIgNSwgMjAxNyDCtyBMaWtlMCDCtyBEaXNsaWtlMCDCtyBGbGFnDQoNCkNhc2V5IFdpbGxpYW1zQ2FzZXkgV2lsbGlhbXMNCkhleSBKaW0sDQoNCkkga25vdyB0aGlzIGlzIHN1cGVyIG9sZCwgYnV0IGlmIHlvdSdyZSBzdGlsbCBsb29raW5nIGZvciBhbiBhbnN3ZXIgLSB5b3Ugc2hvdWxkIE5FVkVSIFNocmluayB0aGUgRGF0YWJhc2UgdW5sZXNzIGFic29sdXRlbHkgbmVlZGVkLiANCg0KSGVyZSBpcyBhIGNvcnJlY3QgbGlzdCBvZiBNYWludGVuYW5jZSBQbGFucyBhbmQgaG93IG9mdGVuIHRoZSBzaG91bGQgcnVuOg0KQmFja3VwIExvZyBGaWxlcyBvZiBhbGwgREI6IEV2ZXJ5IDMwIE1pbnV0ZXMNClByaW1hcnkgTWFpbnRlbmFuY2UgUGxhbjogQ2hlY2sgRGF0YWJhc2UgSW50ZWdyaXR5PlJlYnVpbGQgSW5kZXg QmFjayBVcCAoRnVsbCkgLSBFdmVyeSBkYXkgaWYgcG9zc2libGUsIGFmdGVyIGhvdXJzLg0KIA ==

Вот что текстовый файл сделал это.

This knowledge base article should have the maintenance plan that David is referencing.

https://supportcenter.emds.com/articles/Troubleshooting/How-do-I-reindex-my-Solution-Series-80-database&s=reindex%20&p=1 

If you have any questions about it please feel free to give us a call at the IT department (1-800-565-5564 option 2)

-Art

    December 5, 2017 · Like0 · Dislike0 · Flag

Casey WilliamsCasey Williams
Hey Jim,

I know this is super old, but if you're still looking for an answer - you should NEVER Shrink the Database unless absolutely needed. 

Here is a correct list of Maintenance Plans and how often the should run:
Backup Log Files of all DB: Every 30 Minutes
Primary Maintenance Plan: Check Database Integrity>Rebuild Index>Back Up (Full) - Every day if possible, after hours.

Вот что выходит на стороне сервера

This knowledge base article should have the maintenance plan that David is referencing.

https://supportcenter.emds.com/articles/Troubleshooting/How-do-I-reindex-my-Solution-Series-80-database&s=reindex%20&p=1

If you have any questions about it please feel free to give us a call at the IT department (1-800-565-5564 option 2)

-Art

    December 5, 2017 · Like0 · Dislike0 · Flag

Casey WilliamsCasey Williams Hey Jim,

I know this is super old, but if you're still looking for an answer - you should NEVER Shrink the Database unless absolutely needed.

Here is a correct list of Maintenance Plans and how often the should run: Backup Log Files of all DB: Every 30 Minutes Primary Maintenance Plan: Check Database Integrity>Rebuild Indexbase64: invalid input

1 Ответ

0 голосов
/ 25 января 2019

Вы можете использовать Uri.EscapeDataString() для кодирования строки Base64 в качестве данных тела.Это закодирует косую черту как %2F и должно быть автоматически декодировано сервером.

Dim encodedString As String = Uri.EscapeDataString(base64String)

РЕДАКТИРОВАТЬ:

Для данных длиннее 65520 символов вы можете использоватьWebUtility.UrlEncode() вместо этого, пока проблема класса Uri не будет решена (если она когда-либо будет), но учтите, что WebUtility также имеет некоторые свои причуды .

Dim encodedString As String = WebUtility.UrlEncode(base64String)

Uri.EscapeDataString() является наиболее RFC-совместимым методом на сегодняшний день и, следовательно, является предпочтительным решением (когда это возможно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...