Загрузка файла в хранилище файлов Azure с использованием C # делает все остальные файлы в каталоге длиной 0 - PullRequest
0 голосов
/ 29 января 2019

Я использую следующий метод для загрузки файла в хранилище файлов Azure.Что он делает, так это то, что иногда он стирает файлы, уже находящиеся в каталоге, устанавливая их длину равной 0. Новый файл загружается с правильной длиной, но старые имеют длину, равную 0. Он делает это 8 из 10 раз, безвыдает любую ошибку.

  public static bool UploadFile(string fileName, byte[] fileInBytes, string directory, string sunDirectory)
    {

        if (fileInBytes == null && fileInBytes.Length == 0)
        {
            Logger.Log("file is zero length");
            return false;
        }

        CloudStorageAccount storageAccount;

        try
        {
            storageAccount = CloudStorageAccount.Parse(documentsConnectionString);
        }
        catch(Exception ex)
        {
            Logger.Log("can't use storage account! " + ex.Message);
            return false;
        }

        CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

        CloudFileShare share = fileClient.GetShareReference(fileShareReference);

        if (share.Exists())
        {
            try
            {
                CloudFileDirectory rootDir = share.GetRootDirectoryReference();

                CloudFileDirectory directoryRef;

                directoryRef = rootDir.GetDirectoryReference(directory);

                directoryRef.CreateIfNotExists();

                CloudFileDirectory subDirectoryRef;
                subDirectoryRef = directoryRef.GetDirectoryReference(subDirectory);


                subDirectoryRef.CreateIfNotExists();

                CloudFile file = subDirectoryRef.GetFileReference(fileName);

                file.UploadFromByteArray(fileInBytes, 0, fileInBytes.Count());

                return true;
            }
            catch(Exception ex)
            {
                Logger.Log("Uploading file to azure exception: " + ex.Message);
                return false;
            }                
        }
        else
        {
            Logger.Log("Document share does not exist!");
            return false;
        }
    }

1 Ответ

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

Я обнаружил проблему.

этот код

 if (fileInBytes == null && fileInBytes.Length == 0)
    {

должен быть

 if (fileInBytes == null || fileInBytes.Length == 0)
    {

В противном случае файлы с нулевой длиной разрешены для сохранения.

Спасибо всем, кто потратил время, чтобы посмотреть на вопрос

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