0

我有一个 VF 页面,它基本上是我们 CMS 系统的一个视图。它使用通用 ID 登录,并且使用 Web 服务能够获取并显示文件列表。现在我希望能够单击一个文件并在新窗口中打开它。我有一个 CMS Web 服务,它返回文件的字节流。如何设置 Apex 远程操作以将该流返回到浏览器?此外,如何在新标签中打开它?

我想要一个删除操作,例如:

public static HttpResponse sendRequest(String endpoint, String method)
{
    HttpRequest req = new HttpRequest();
    req.setMethod(method);
    req.setEndpoint(endpoint);

    HttpResponse resp;
    if (Test.isRunningTest())
    {
        resp = new HttpResponse();
        resp.setBody('');
    }
    else
    {
        Http http = new Http();
        resp = http.send(req);
    }

    return resp;
}


@RemoteAction
public static HttpResponse open(docid)
{
    return sendRequest(API_DOMAIN + '/ws/open/' + docid + '/', 'GET');
}

然后在 UI 方面:

MainBehavior.Open= function(docid) {
    Visualforce.remoting.Manager.invokeAction(
        '{!$RemoteAction.ResourceCenterController.open}',
                    docid,
        function(result, event)
        {
            if (event.status)
            {
                 return result;
            } 
            else if (event.type === 'exception') 
            {
                alert('Not able to open!\n\n' + event.message);
            }
            else
            {
                alert('Not able to open!');
            }
        }
    );

稍后通过点击事件:

window.open(MainBehavior.Open(docid), '_blank');

我知道这段代码不能按原样工作,但这是我的目标。关于如何解决这个问题的任何建议?

4

1 回答 1

-1
if (event.status) {
 // window.open(result,'_blank'); //file in new window
 window.location.href =result;    //file in same window
}

此行将打开文件。避免在新窗口中打开。AdBlockers 将阻止在大多数浏览器中通过 JS 打开的新窗口。

于 2013-08-09T09:51:28.627 回答