来自Amazon S3的Word文件的内容类型
问题描述:
我需要从Amazon S3获取Microsoft Word(.docx)文件的内容。我能够得到该对象,但结果并不是我想要的,因为它看起来像在记事本中打开的Word文件。我试图读取.txt文件,它完美的作品。我认为这个问题是一种内容类型。来自Amazon S3的Word文件的内容类型
我想请教两个问题:
- 是否有可能获得该文件的内容是文件@Amazon以及如何修改我的代码做achive呢?
- 是否可以通过格式化(颜色,粗体文本等)来获取内容?如果是这样,我会赞扬一些线索。
我的代码:
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;
}
答
我理解你的问题,关于获取与内容类型的对象。我认为迈克尔的答案有一些信息来解决这个问题。
我只是想在S3存储桶中存储对象时添加一些附加信息。将对象添加到存储区时,可以在元数据字段中设置内容类型。
如果您要存储对象并在以后检索它,请在元数据中添加内容类型(Content-Type)。这样您可以在读取对象时获取对象的内容类型。
如果稍后添加和检索对象,这是更好的方法。
doc application/msword
docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
如果你正在读别人添加的对象,你可以要求再添加的内容类型(或),你需要在迈克尔的答复中提到,以获得它。
答
正确Content-Type
为.docx
文件application/vnd.openxmlformats-officedocument.wordprocessingml.document
。
Content-type设置不正确可能会导致Web浏览器错误地呈现文档,但这不可能是问题。如果您正在尝试从代码读取它,则正确设置它将不会影响实际包含在responseBody
中的字节。
您需要一个能够理解.docx
格式的文件内部结构的库。
在处理打开文档的问题中没有代码,你能解释你在做什么触发文件在记事本中打开吗? –