2017-09-15 127 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格式的文件內部結構的庫。