Изменение размеров массива во времени выполнения в VB.NET

Лучший и самый простой способ загрузить файлы в Amazon S3 через asp.net. Посмотрите на следующий пост в блоге мной. Я думаю, что это поможет. Здесь я объяснил, от добавления корзины S3 до создания API-ключа, установки Amazon SDK и написания кода для загрузки файлов. Ниже приведен пример кода для загрузки файлов в Amazon S3 с помощью asp.net C #.

using System
using System.Collections.Generic
using System.Linq
using System.Web
using Amazon
using Amazon.S3
using Amazon.S3.Transfer
/// 
/// Summary description for AmazonUploader
/// 
public class AmazonUploader
{
        public bool sendMyFileToS3(System.IO.Stream localFilePath, string bucketName, string subDirectoryInBucket, string fileNameInS3)
        {
        // input explained :
        // localFilePath = we will use a file stream , instead of path
        // bucketName : the name of the bucket in S3 ,the bucket should be already created
        // subDirectoryInBucket : if this string is not empty the file will be uploaded to
            // a subdirectory with this name
        // fileNameInS3 = the file name in the S3
    // create an instance of IAmazonS3 class ,in my case i choose RegionEndpoint.EUWest1
    // you can change that to APNortheast1 , APSoutheast1 , APSoutheast2 , CNNorth1
    // SAEast1 , USEast1 , USGovCloudWest1 , USWest1 , USWest2 . this choice will not
    // store your file in a different cloud storage but (i think) it differ in performance
    // depending on your location


        IAmazonS3 client = new AmazonS3Client("Your Access Key", "Your Secrete Key", Amazon.RegionEndpoint.USWest2);

    // create a TransferUtility instance passing it the IAmazonS3 created in the first step
    TransferUtility utility = new TransferUtility(client);
    // making a TransferUtilityUploadRequest instance
    TransferUtilityUploadRequest request = new TransferUtilityUploadRequest();

    if (subDirectoryInBucket == "" || subDirectoryInBucket == null)
    {
        request.BucketName = bucketName; //no subdirectory just bucket name
    }
    else
    {   // subdirectory and bucket name
        request.BucketName = bucketName + @"/" + subDirectoryInBucket;
    }
    request.Key = fileNameInS3 ; //file name up in S3
    //request.FilePath = localFilePath; //local file name
    request.InputStream = localFilePath;
    request.CannedACL = S3CannedACL.PublicReadWrite;
    utility.Upload(request); //commensing the transfer

    return true; //indicate that the file was sent
}
}

Здесь вы можете использовать функцию sendMyFileToS3 для загрузки потока файлов в amazon S3. Для более подробной информации проверьте мой блог по следующей ссылке.

Загрузить файл в Amazon S3 через asp.net

Надеюсь, вышеупомянутая ссылка поможет.

10
задан Peter Mortensen 6 October 2014 в 21:53
поделиться

5 ответов

Вы могли использовать оператор ReDim , но это действительно не лучший вариант. Если ваш массив будет часто менять размеры, особенно , поскольку это звучит так, будто вы просто добавляете, вам, вероятно, следует использовать общий List (Of T) или аналогичный тип коллекции.

] Вы можете использовать его так же, как и массив, с добавлением того, что добавить элемент в конец так же просто, как MyList.Add (item)

Чтобы использовать общий список, добавьте Imports System .Collections.Generics в начало файла. Затем вы должны объявить новый целочисленный список вроде этого:

Dim MyList As New List(Of Integer)()

или список строк вроде этого:

Dim MyList As New List(Of String)()

Вы должны уловить идею.

24
ответ дан 3 December 2019 в 13:41
поделиться

Предлагаемому ReDim требуется ключевое слово Preserve для этого сценария.

ReDim Preserve MyArray(n)
8
ответ дан 3 December 2019 в 13:41
поделиться

Как говорит Джоэл, используйте список.

Dim MyList As New List(Of String)

Не забудьте изменить Of String на Of, какой бы тип данных вы ни использовали.

0
ответ дан 3 December 2019 в 13:41
поделиться

Используйте команду ReDim, чтобы указать новый размер.

ReDim MyArray(MyArray.Length + 1)
1
ответ дан 3 December 2019 в 13:41
поделиться

Я бы предпочел некоторый тип класса коллекции, но если вы ХОТИТЕ использовать массив сделайте это так:

Dim arr() As Integer
Dim cnt As Integer = 0
Dim ix As Integer

For ix = 1 To 1000
    cnt = cnt + 1
    ReDim arr(cnt)
    arr(cnt - 1) = ix
Next
2
ответ дан 3 December 2019 в 13:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: