Java Web服务上载后隐藏的Sharepoint文档

时间:2012-06-14 15:49:33

标签: java sharepoint sharepoint-2007

所以我正在尝试使用MOSS 2007 Web Services API的Java实现将文档上传到sharepoint站点。我已设法将文件上传到网站,我可以通过手动查看目标网址来确认。但是,使用所有文档视图时,文件不可见。我觉得这与我如何设置元数据有关,但我不确定。

这是我的参考代码:

public static void main(String[] args) {

JCopy copy = new JCopy("http://somespsite", "user", "pass");
try {
        File f = new File("c:/test.txt");
        byte[] b = new byte[(int) f.length()];

        FileInputStream fileInputStream = new FileInputStream(f);
        fileInputStream.read(b);
        List<String> dest = new ArrayList<String>();
        dest.add("http://somespsite/Test Repository/Forms/test.txt");

        List< FieldInformation > fields = new ArrayList<FieldInformation>();
        FieldInformation field = new FieldInformation();
        field.setType(FieldType.TEXT);
        field.setDisplayName("Test2");
        field.setInternalName("Test2");
        field.setId(java.util.UUID.randomUUID().toString());
        field.setValue(field.getValue());

        copy.copyIntoItems(
                "c:/test.txt",
                dest, 
                fields, 
                b, 
                null);

        }catch (Exception e) {
            e.printStackTrace();
        }
}


class JCopy {
public int copyIntoItems(
        String sourceUrl, 
        List<String> destinations, 
        List<FieldInformation> fields, 
        byte[] stream,
        List<CopyResult> results ) 
{
    DestinationUrlCollection destinationUrls = new DestinationUrlCollection();
    for(String s : destinations)
        destinationUrls.addString(s);

    FieldInformationCollection fieldsInput = new FieldInformationCollection();
    for(FieldInformation f : fields)
        fieldsInput.addFieldInformation(f);

    Holder<Long> copyIntoItemsResult = new Holder<Long>(Long.valueOf(-1));
    Holder<CopyResultCollection> resultsOutput = new Holder<CopyResultCollection>((CopyResultCollection) results);

    try {

        port.copyIntoItems(sourceUrl, destinationUrls, fieldsInput, stream, copyIntoItemsResult, resultsOutput);

        results = resultsOutput.value.getCopyResult();

    } catch (Exception e) {
        e.printStackTrace();

    }

    return copyIntoItemsResult.value.intValue();
}}

port是Netbeans使用JDK 1.6生成的存根的实例。

1 个答案:

答案 0 :(得分:1)

您正在将文档上传到错误的位置。

文件存储在文档库中。文档库具有一组默认的表单,用于显示和编辑每个文件的属性。具有适当权限的用户可以自定义或添加新权限。

表单放在每个文档库的“Forms”文件夹中。所有视图都显示库本身的内容,而不是Forms文件夹。

我假设“Test Repository”是您的文档库,在这种情况下,您将文件test.txt上传到“Forms”目录而不是“Test Repository”本身。

只需将您的网址更改为指向“测试存储库”而不是“测试存储库/表单”。