我有一个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');
我知道这段代码不能正常工作,但这是我的目标。关于如何解决这个问题的任何建议?
答案 0 :(得分:-1)
if (event.status) {
// window.open(result,'_blank'); //file in new window
window.location.href =result; //file in same window
}
此行将打开文件。避免在新窗口中打开。 AdBlockers将阻止在大多数浏览器中通过JS打开的新窗口。