Получение формата файла не поддерживается при загрузке файла xls в озеро данных Azure gen1

Я разрабатываю приложение, которое будет вводить файлы от пользователя с помощью angular7 и .net core. Я передаю полезную нагрузку на свой сервер с помощью веб-сокета. Я могу успешно загрузить в azure datalake, но когда я просматриваю или загружаю файл, он повреждается, и размер файла также превышает исходный размер файла.

загрузить.html

<input id = "file-input" accept = ".xlsx" type = "file" style = "display: none"  (change) = "addExternalFile($event)" />

загрузить.ts

  addExternalFile(event) {
    try {

      this.myForm1 = false;
      this.addFlag = false;
      this.FileName = "";
      this.first_sheet_name = "";
      this.SheetNames = "";
      this.file = event.target.files[0];
      console.info(event.target.value);
      let fileReader = new FileReader();
      fileReader.onload = (e) => {
        this.arrayBuffer = fileReader.result;

         this.Filedata = new Uint8Array(this.arrayBuffer);
        var arr = new Array();
        for (var i = 0; i != this.Filedata.length; ++i) arr[i] = String.fromCharCode(this.Filedata[i]);
        var bstr = arr.join("");
        this.workbook = XLSX.read(bstr, { type: "binary" });
        this.first_sheet_name = this.workbook.SheetNames[0];
        this.SheetNames = this.first_sheet_name;
        this.WorksheetNamelist = this.workbook.SheetNames;
        if (this.Filedata.length > 0) {
          this.FileName = this.file.name;
          this.FileType = this.file.type;
          this.addFlag = true;
          this.myForm1 = true;
          this.UploadStatus = "Upload Successfully";
          this.Upload(event);
        }
        else {
          this.UploadStatus = "Upload Failed , Please Try Again ..........";
        }
      }
      fileReader.readAsArrayBuffer(this.file);


    }
    catch (ex) {
      this.UploadStatus = "Upload Failed , Please Try Again ..........";
    }
  }

После этого я передаю полезную нагрузку в веб-сокет следующим образом:

var data = { "fileName": this.FileName, "Path": "", "sheetName": this.Sheetlist, "filetype": this.FileType, "Filedata": this.Filedata };
      var payload = JSON.stringify(data);
       this.commonService.sendMessageToServer(payload);

Мой контроллер:

 public async Task<string> CreateDataSetFromFile(MessageWrapper wrapper)
        {
            var tenantname = wrapper.TenantName;
            var tenantID = wrapper.TenantID;
            AdlCred adlcred = new AdlCred();
            adlcred._adlsAccountName = "";     
            string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            string fileName = jobject["fileName"].ToString();


            string pathname = "/upload/" + fileName;

            //JObject tempArray = JObject.Parse( jobject["Filedata"].ToString());
            string stringData = jobject["Filedata"].ToString();



            //byte[] Filedata = Encoding.ASCII.GetBytes(jobject["Filedata"].ToString());
            byte[] Filedata =  Encoding.ASCII.GetBytes(jobject["Filedata"].ToString());

           // string[] arrayString = new string[]; //Your Array.

            byte[] arrayByte = new byte[Filedata.Length];

            for (int i = 0; i < arrayByte.Length; i++)
            {
                arrayByte[i] = Convert.ToByte(arrayByte[i]);
            }
            Stream stream = new MemoryStream(arrayByte);

         //   MemoryStream stream = new MemoryStream(Filedata);
            string sname = "Sheet1";
            bool extHeader = true;
            bool hasMerCells = false;


            await Create(stream, pathname, true, adlcred);
}

 public async Task Create(Stream stream, string destFilePath, bool overWridden, AdlCred adlcred)
        {
            try
            {




                //  var creds = ApplicationTokenProvider.LoginSilentAsync(adlcred._domain, adlcred._applicationId, adlcred._secretKey).Result;

                var creds = ApplicationTokenProvider.LoginSilentAsync("", "", "").Result;

                DataLakeStoreFileSystemManagementClient _adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(creds);



                await _adlsFileSystemClient.FileSystem.CreateAsync("althing", destFilePath, stream,true);
                // _adlsFileSystemClient.FileSystem.Append(adlcred._adlsAccountName, destFilePath, stream);
                //  await _adlsFileSystemClient.FileSystem.CreateAsync(adlcred._adlsAccountName, destFilePath, stream, overWridden);
                Console.WriteLine("File Uploaded Successfully...");
            }
            catch (Exception ex)
            {



            }
        }
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
123
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, я пытался воспроизвести тот же сценарий и получил ту же ошибку.

Кажется, загрузка с портала вызывает эту проблему, хотя, если вы застряли, вы можете использовать обозреватель хранилища Azure или AZ cli для загрузки файла.

Обозреватель хранилища Azure:

https://azure.microsoft.com/en-us/features/storage-explorer/

Примеры PowerShell:

https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-get-started-powershell#rename-download-and-delete-data-from-your-data-lake-storage-gen1-account

Надеюсь, поможет.

Другие вопросы по теме