Пишите прямо в Amazon S3 - PullRequest
       10

Пишите прямо в Amazon S3

2 голосов
/ 19 апреля 2011

Я читаю документацию по Amazon S3, но я немного потерян ...

На самом деле, пользователь загружает файл в Amazon S3, затем я копирую его в EC2, обрабатываю его, возвращаю в S3 и пользовательмогу загрузить его.

Когда я обрабатываю файл, мне нужно создать HTML-файл, и мне нужно создать в Amazon S3, но я не знаю, как я могу создать этот файл непосредственно на S3.Прямо сейчас я создаю файл в EC2 и затем перемещаю его в S3.

Чтобы создать этот HTML-код, используйте:

            TextWriter tw = new StreamWriter(pathFile);
            tw.WriteLine(page);
            tw.Close();

Где page - строкас HTML-кодом и pathFile: string outputWap = Server.MapPath("~/xxx.html");

Я использую ASP.NET MVC 2.

Спасибо за вашу помощь.

С уважением.

Ответы [ 3 ]

3 голосов
/ 19 апреля 2016

Вы не можете создать (не путать с загрузкой, что, конечно, вполне осуществимо) файл в s3 (по крайней мере, с помощью .net SDK) в настоящее время.Если у вас нет контроля над локальной файловой системой (ограничения по пространству, разрешения и т. Д.), Вы можете создать файл в памяти и затем загрузить этот поток в s3, как если бы он был файлом, хранящимся локально на диске.Код для c # будет выглядеть следующим образом:

public static bool CreateFile()
    {
        // Create file in memory
        UnicodeEncoding uniEncoding = new UnicodeEncoding();

        // Create the data to write to the stream.
        byte[] memstring = uniEncoding.GetBytes("you're file content here");
        using (MemoryStream memStream = new MemoryStream(100))
        {
            memStream.Write(memstring, 0, memstring.Length);

            // upload to s3
            try
            {
                AmazonS3Client s3 = new AmazonS3Client(RegionEndpoint.USEast1);
                using (Amazon.S3.Transfer.TransferUtility tranUtility =
                              new Amazon.S3.Transfer.TransferUtility(s3))
                {
                    tranUtility.Upload(memStream, bucketname, keyname);

                    return true;
                }
            }
            catch (Exception ex)
            {
                return false;
            }
        }

    }
1 голос
/ 19 апреля 2011

Если вы используете AWS SDK для .Net, вы можете попробовать использовать PutObjectRequest с набором InputStream вместо FilePath, хотя я сам не пробовал.

Иначе я не вижу, что не так с тем, как ты сейчас это делаешь.

0 голосов
/ 12 мая 2011

Пожалуйста, прочитайте следующие статьи, я думаю, что они уместны:

http://doc.s3.amazonaws.com/proposals/post.html http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html

С уважением, Ашок

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