0

I have a requirement where from my application I have to edit files using office 365. I have used WOPI and it was working fine before, but now I'm getting the following error.

enter image description here

When I contacted the support team, they said WOPI CheckFileInfo is not called, so I explicitly called still the issue persists.

Below is my code,

function submit(docId, type) {

    var WOPISrc = "WOPISrc=https://" + host +"/wopi/files/" + docId;

    if (type == 'word') {
        $('#office_form_online').attr('action', 'https://word-edit.officeapps.live.com/we/wordeditorframe.aspx?edit=1&ui=en-US&rs=en-US&IsLicensedUser=1&hid=1234&sc=edit_form&' + WOPISrc);
           } else if (type == 'excel') {
        $('#office_form_online').attr('action', 'https://excel.officeapps.live.com/x/_layouts/xlviewerinternal.aspx?edit=1&ui=en-US&rs=en-US&IsLicensedUser=1&hid=1234&sc=edit_form&' + WOPISrc);
    } else if (type == 'powerpoint') {
        $('#office_form_online').attr('action', 'https://powerpoint.officeapps.live.com/p/PowerPointFrame.aspx?PowerPointView=EditView&ui=en-US&rs=en-US&IsLicensedUser=1&hid=1234&sc=edit_form&' + WOPISrc);
    } else if (type == 'pdf') {
        $('#office_form_online').attr('action', 'https://word-view.officeapps.live.com/wv/wordviewerframe.aspx?PdfMode=1&ui=en-US&rs=en-US&IsLicensedUser=1&hid=1234&sc=edit_form&' + WOPISrc);
    } else {
        return false;
    }

    var promise = createWOPIToken(docId);
    promise.success(function (data) {
        $.ajax({
            url: "https://" + host + "/wopi/files/" + docId,
            type: "GET",
            data: {
                access_token: data.token
            },
            async: false,
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            error: function (jqXHR, textStatus, errorThrown) {
                return '';
            },
            success: function (data1) {
                console.log(data1);
                $.ajax({
                    url: "https://" + host + "/wopi/files/" + docId + "/content",
                    type: "GET",
                    data: {
                        access_token: data.token
                    },
                    async: false,
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    error: function (jqXHR, textStatus, errorThrown) {
                        return -1;
                    },
                    success: function (contents) {
                        $('#office_access_token_online').val(data.token);
                        $('#office_access_token_ttl_online').val(0);
                        var frameholder = document.getElementById('frameholder_online');
                        $(frameholder).show();
                        closeiFrame();
                        var office_frame = document.createElement('iframe');
                        office_frame.src = 'https://"+ host + "/wopi/files/" ' + docId + "?access_token="+data.token;
                        office_frame.name = 'office_frame_online';
                        office_frame.id = 'office_frame_online';
                        office_frame.title = 'Office Online Frame';
                        office_frame.setAttribute('allowfullscreen', 'true');
                        office_frame.setAttribute('sandbox',
                                'allow-scripts allow-same-origin allow-forms allow-popups allow-top-navigation allow-popups-to-escape-sandbox');
                        frameholder.appendChild(office_frame);
                        
                        document.getElementById('office_form_online').submit();

                        showCloseButton();
                    }
                });
            }
        });
    });
}

Java Code

@Override
@GET
@Path("/files/{fileId}")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response checkFileInfo(
        @NotNull @PathParam("fileId") Integer fileId,
        @NotNull @QueryParam("access_token") String access_token) {

        return Response.ok().entity(fileInfo).build();
    }
}

@Override
    @GET
    @Path("/files/{fileId}/content")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getFile(
            @NotEmpty @PathParam("fileId") Integer fileId,
            @QueryParam("access_token") String access_token) {

                byte[] data = new byte[(int) content().length()];
                DataInputStream dataIs = new DataInputStream(content.getBinaryStream());
                dataIs.readFully(data);
                return Response.ok(new ByteArrayInputStream(data)).build();
    }


 @Override
    @POST
    @Path("/files/{fileId}/contents")
    @Transactional
    public Response putFile(@PathParam("fileId") Integer fileId,
            @QueryParam("access_token") String access_token, byte[] bytes) {

            save(BlobProxy.generateProxy(SecurityWrapper.encrypt(bytes)));
            return Response.ok().build();
    }

The API calls are returning responses but it's not opening files.

EDIT

When I try hitting the below URL (which is used to open files online), without any source, still it shows as Service Unavailable.

https://word-edit.officeapps.live.com/we/wordeditorframe.aspx?

Is it because of it, that my code isn't working? And in the test server, it's a different error, we ran into a problem.

And this is the console error

enter image description here

Any help is appreciated.

Thank you.

Shinchan
  • 81
  • 2
  • 17

0 Answers0