現在、.NETSDKを使用してAmazonS3からファイルをダウンロードしています。現在、次のコードを使用しています(これらのファイルのみが許可されています)。
With request
.WithBucketName(bucketName)
.WithKey(key)
End With
response2 = client.GetObject(request)
Dim strReader As MemoryStream = New MemoryStream
response2.ResponseStream.CopyTo(strReader)
Response.ContentType = getContentType(key)
Response.OutputStream.Write(strReader.GetBuffer, 0, strReader.GetBuffer.Length)
Dim fileName As String = Path.GetFileName(key)
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName)
Return ""
End Function
Private Function getContentType(ByVal fileToContent As String) As String
Dim fileExtension As String = Path.GetExtension(fileToContent)
Dim contentType As String
Select Case fileExtension
Case ".bmp"
contentType = "image/bmp"
Case ".png"
contentType = "image/png"
Case ".xlsx", ".xls"
contentType = "application/vnd.ms=excel"
Case ".jpg", ".jpeg", ".gif"
contentType = "image/jpeg"
Case ".pdf"
contentType = "application/pdf"
Case ".ppt", ".pptx"
contentType = "application/vnd.ms-powerpoint"
Case ".doc", ".docx"
contentType = "application/msword"
Case Else
contentType = "text/plain"
End Select
Return contentType
End Function
私は2つの問題を抱えています:最初に、クライアントウィンドウでファイルを開こうとすると(MS Officeファイルの場合)ファイルが破損していると通知されますが、とにかく開くことができる場合もありますが、そうでない場合もあります。次に、ファイルに.pptxのような拡張子があり、コンテンツタイプに「PowerPoint」と言うと、ブラウザが「.ppt」や「.doc」のような拡張子を追加しようとしているようです。それを修正する方法はありますか?
編集:MS Officeファイルを開いたときに表示される実際のメッセージ:'PowerPointがPowerPointFile.pptで読み取り不可能なコンテンツを検出しました。このプレゼンテーションの内容を復元しますか?このプレゼンテーションのソースを信頼できる場合は、[はい]をクリックします。