0

この WCF サービスは TIFF イメージを返します。リポジトリに接続されているかどうかを確認し、データファイルからバイトを取得します。ファイルが PDF、tiff、または画像であるかどうかを確認し、適切な MIME タイプを返します。サービスを呼び出すと、適切なファイルが返されますが、イメージ名は「documentID」.tif です。返される画像のファイル名を設定するにはどうすればよいですか?

[OperationContract]
[WebInvoke(Method = "GET", UriTemplate="File/{documentID}")]
Stream GetDocumentFile_GET(string documentID);




public Stream GetDocumentFile_GET(string documentID)
{
    if (ProprietaryClass.IsConnected)
    {
        ProprietaryClass _documentForViewer = new ProprietaryClass(documentID);
        string _fileType = ProprietaryClass.NativeFileType; 
        string _mimetype = "image/tiff";

        switch (_fileType)
        {
            case "TIF":
                _mimetype = "image/tiff";
                break;
            case "PDF":
                _mimetype = "application/pdf";
                break;
            case "PNG":
                _mimetype = "image/png";
                break;
        };

        if (ProprietaryClass.ProprietaryMethod(_documentForViewer))
        {

            ProprietaryClass _downloadToViewer = new ProprietaryClass();

            if (_documentForViewer.TiffFile != null)
            {
                _downloadToViewer = _documentForViewer.TiffFile;
            }
            else
            {
                _downloadToViewer = _documentForViewer.NativeFile;
            }


            MemoryStream fileStream = new MemoryStream(_downloadToViewer.FileData);

            // fileStream is now array of bytes
            System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.ContentType = _mimetype;

            return (Stream)fileStream;
        }
        else
        {
            return new MemoryStream(Encoding.UTF8.GetBytes("Document type not supported by native viewer"));
        }
    }
    else
    {
        return new MemoryStream(Encoding.UTF8.GetBytes("Not connected"));
    }
}
4

2 に答える 2

1

RESTful サービスでこれを行う最善の方法は、Content-Dispositionヘッダーを使用することです。ほとんどのブラウザーはこれをそのままサポートしており、ヘッダーが示す名前で名前を付けて保存ダイアログをポップします。他のクライアントに関しては、ヘッダーに注意を払っているかどうかに関係なく、クライアントを制御している場合はいつでも追加できます。

于 2012-03-28T16:20:12.977 に答える
1

を直接返す代わりに、と を表すファイルの名前を含むStreamカスタム オブジェクト (例: CustomStream) を返します。StreamStream

于 2012-03-28T16:13:04.550 に答える