How do I upload a document to SharePoint with Java?

前端 未结 6 1967
余生分开走
余生分开走 2020-12-30 03:47

I\'m creating some big files (DB exports) with Java and I need to put them somewhere on our SharePoint server. Right now, I\'m doing this with IE but I\'d like to automate t

6条回答
  •  -上瘾入骨i
    2020-12-30 04:13

    I managed to up and download files to sharepoint with this code, using the integrated Windows identification, maybe it helps.

    public class HttpClient {               
        HttpClient() { }
    
        public static void download(final String source, final File resultingFile) {
            CloseableHttpClient client = WinHttpClients.createSystem();
            HttpGet httpRequest = new HttpGet(source);
    
            CloseableHttpResponse httpResponse = null;      
            try {
                httpResponse = client.execute(httpRequest);
                HttpEntity entity = httpResponse.getEntity();
    
                if(httpResponse.getStatusLine() != null && httpResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
                    LOGGER.warn(httpResponse.getStatusLine());
                }else {  
                    LOGGER.debug(httpResponse.getStatusLine());
                    FileUtils.touch(resultingFile);
                    InputStream is = entity.getContent(); 
                    File outFile = new File(resultingFile.getAbsolutePath());
                    FileOutputStream fos = new FileOutputStream(outFile);
    
                    int inByte;
                    while ((inByte = is.read()) != -1) {
                        fos.write(inByte);
                    }
                    is.close();
                    fos.close(); 
                    client.close();
                }
            } catch (ClientProtocolException e) {
                LOGGER.warn(e);
            } catch (UnsupportedOperationException e) {
                LOGGER.warn(e);
            } catch (IOException e) {
                LOGGER.warn(e);
            }
        }
    
    
        public static void upload(final File source, final String destination) {    
            CloseableHttpClient httpclient = WinHttpClients.createSystem();
            HttpPut httpRequest = new HttpPut(destination);
            httpRequest.setEntity(new FileEntity(new File(source.getPath())));
    
            CloseableHttpResponse httpResponse = null;
            try {
                httpResponse = httpclient.execute(httpRequest);
                EntityUtils.consume(httpResponse.getEntity());
    
                if (httpResponse.getStatusLine() != null && httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_CREATED) {
                    LOGGER.debug(httpResponse.getStatusLine());
                    LOGGER.info("Upload of " + source.getName() + " via HTTP-Client succeeded.");
                } else if (httpResponse.getStatusLine() != null && httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                    LOGGER.debug(httpResponse.getStatusLine());
                }else {
                    LOGGER.warn("Uploading " + source.getName() + " failed.");
                    LOGGER.warn(httpResponse.getStatusLine().getStatusCode() + ": " + httpResponse.getStatusLine().getReasonPhrase());
                }
            } catch (IOException e) {
                LOGGER.warn(e);
                LOGGER.warn(e.getMessage());
            }       
            return;
        }
    }
    

    WinHttpClients:

     
         org.apache.httpcomponents
         httpclient-win
         4.4
      
    

    Path:
    org.apache.http.impl.client.WinHttpClients

    Description:
    Factory methods for CloseableHttpClient instances configured to use integrated Windows authentication by default.

提交回复
热议问题