2017-09-15 76 views
0

我需要从Amazon S3获取Microsoft Word(.docx)文件的内容。我能够得到该对象,但结果并不是我想要的,因为它看起来像在记事本中打开的Word文件。我试图读取.txt文件,它完美的作品。我认为这个问题是一种内容类型。来自Amazon S3的Word文件的内容类型

我想请教两个问题:

  1. 是否有可能获得该文件的内容是文件@Amazon以及如何修改我的代码做achive呢?
  2. 是否可以通过格式化(颜色,粗体文本等)来获取内容?如果是这样,我会赞扬一些线索。

我的代码:

public static string ReadObjectData(string keyName) 
{ 
    string responseBody = ""; 

    //using (IAmazonS3 client = new AmazonS3Client(RegionEndpoint.USEast1)) 
    using (IAmazonS3 client = new Amazon.S3.AmazonS3Client("key", "secretKey", Amazon.RegionEndpoint.EUCentral1)) 
    { 
     GetObjectRequest request = new GetObjectRequest 
     { 
      BucketName = "bucketName", 
      Key = keyName 
     }; 

     using (GetObjectResponse response = client.GetObject(request)) 
     using (Stream responseStream = response.ResponseStream) 
     using (StreamReader reader = new StreamReader(responseStream)) 
     { 
      responseBody = reader.ReadToEnd(); 
     } 
    } 
    return responseBody; 
} 
+0

在处理打开文档的问题中没有代码,你能解释你在做什么触发文件在记事本中打开吗? –

回答

0

我理解你的问题,关于获取与内容类型的对象。我认为迈克尔的答案有一些信息来解决这个问题。

我只是想在S3存储桶中存储对象时添加一些附加信息。将对象添加到存储区时,可以在元数据字段中设置内容类型。

如果您要存储对象并在以后检索它,请在元数据中添加内容类型(Content-Type)。这样您可以在读取对象时获取对象的内容类型。

如果稍后添加和检索对象,这是更好的方法。

doc  application/msword 
docx application/vnd.openxmlformats-officedocument.wordprocessingml.document 

如果你正在读别人添加的对象,你可以要求再添加的内容类型(或),你需要在迈克尔的答复中提到,以获得它。

1

正确Content-Type.docx文件application/vnd.openxmlformats-officedocument.wordprocessingml.document

Content-type设置不正确可能会导致Web浏览器错误地呈现文档,但这不可能是问题。如果您正在尝试从代码读取它,则正确设置它将不会影响实际包含在responseBody中的字节。

您需要一个能够理解.docx格式的文件内部结构的库。