Загрузить файл multipartformdata в Hubspot API - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь загрузить файлы в API hubspot. https://developers.hubspot.com/docs/methods/files/post_files Все выглядит нормально, когда я смотрю в CRM, за исключением того, что некоторые имена файлов выглядят странно.

enter image description here

Файлы создаются и получают размер файла, но повреждены, потому что я не могу открыть их или загрузить.

My метод выглядит так

   private async Task<HsCreateFileResponse> UploadAttachment(string pStream, string pFilename)
    {
        string url = API_BASE_URL + "filemanager/api/v2/files?hapikey=" + API_KEY;
        string path = @"C:\Temp filer\";
        HttpClient client = new HttpClient();
        var content = new MultipartFormDataContent();
        content.Headers.Add("hidden", "true");

        using (var s = new MemoryStream())
        {
            using (var writer = new StreamWriter(s))
            {
                writer.Write(pStream);
                s.Position = 0;
                using (var fs = new FileStream(path + pFilename, FileMode.Create))
                {
                    s.CopyTo(fs);
                }
                writer.Flush();
            }
        }
        using (var fs = new FileStream(path + pFilename, FileMode.Open, FileAccess.Read))
        {
            byte[] bytes = new byte[fs.Length];
            int numBytesToRead = (int)fs.Length;
            int numBytesRead = 0;

            while (numBytesToRead > 0)
            {
                int n = fs.Read(bytes, numBytesRead, numBytesToRead);
                if (n == 0)
                {
                    break;
                }
                numBytesRead += n;
                numBytesToRead -= n;
            }

            numBytesToRead = bytes.Length;
            System.Threading.Thread.Sleep(100);
            content.Add(new StreamContent(new MemoryStream(bytes)), "files", pFilename);
            var res = await client.PostAsync(url, content);
            return JsonConvert.DeserializeObject<HsCreateFileResponse>(await res.Content.ReadAsStringAsync());
        }

    }

1 Ответ

0 голосов
/ 14 апреля 2020

Добавьте это к содержанию:

content.Add(new StringContent("my-folder/and-subfolder"), "folder_paths");
content.Add(new StringContent("my-file-name.png"), "file_names");
...