2011-04-19 96 views
1

我读Amazon S3的文件,但我有点失落......直接写入到Amazon S3

实际上,用户上传文件到Amazon S3,然后,我把它复制到EC2,proccess它,回S3和用户可以下载它。

当我处理文件时,我需要创建一个html文件,并且需要在Amazon S3中创建,但我不知道如何直接在S3上创建此文件。现在,我在EC2上创建一个文件,然后将其移至S3。

要创建这个网站y使用:

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

是用HTML代码的字符串,并pathFile是:string outputWap = Server.MapPath("~/xxx.html");

我使用ASP.NET MVC 2

感谢您的帮助。

问候。

回答

1

如果您正在使用适用于.Net的AWS开发工具包,您可以尝试使用PutObjectRequestInputStream集合,而不是FilePath,尽管我自己并没有尝试过。

否则我真的不知道你现在正在做什么的方式有什么问题。

+0

谢谢你的回答杰夫,我要去尝试它,我会留下一个反馈。 我很高兴知道这是错误的。 PD:我忘记了,是的,我正在使用适用于.NET的AWS开发工具包:) – Pipeline 2011-04-19 14:23:12

+0

最后我在EC2上编写html文件并将其复制到S3。与其他文件相同的方式。 感谢您的帮助:) – Pipeline 2011-04-20 10:29:58

+0

@Pipeline - 没问题:) – 2011-04-20 11:06:25

2

此时,您不能在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; 
      } 
     } 

    }