Spring MVC在RestService中存储文件

时间:2015-06-24 21:08:43

标签: java spring rest spring-mvc

您好我在服务器上存储文件时遇到困难我是Spring MVC的新手。如果我做对或错,任何人都可以指出我。 我要做的是拿一些文件(文本或二进制文件)并使用Restservice将它们存储在存储设备中。

public @ResponseBody String storeFiles(@RequestBody List<File> filenames, @PathVariable String dirname)
        throws Exception {
    // TODO Auto-generated method stub
    Gson gson =  new Gson();
    String jsonList = gson.toJson(storeFiles.storeFilesToHitachi(filenames, dirname));
    return jsonList;
}public Map<String, Integer> storeFilesToHitachi(List<File> filenames,String   dirname) throws Exception{
    Map<String, Integer> resultStored = new HashMap<String, Integer>();
    if(checkDirAvailable(dirname) || createDirectoryAtHitachi(dirname)){
        resultStored = storeFilenamesAtHitachi(filenames, dirname);
    }
    return resultStored;
}

public boolean createDirectoryAtHitachi(String dirname){
    boolean isDirCreated = false;
    try{
        httpPutRequest.setHeader(HCPUtils.HTTP_AUTH_HEADER,"HCP "+ sEncodedUserName + ":" + sEncodedPassword);
        hitachiURI = constructURLForCreateDir(dirname);
        httpPutRequest.setURI(hitachiURI);
        HttpResponse httpCreateDirResp = httpClient.execute(httpPutRequest);
        int responseCode = httpCreateDirResp.getStatusLine().getStatusCode();
        if(responseCode == 201) {
            isDirCreated = true;
            logger.info("A directory by the name "+ dirname +" has been created" );
        }
        logger.info(responseCode);
    }
    catch(Exception e){
        logger.error("Unable to create directory:" + dirname + e.getMessage());
    }
    return isDirCreated;
}

public boolean checkDirAvailable(String dirname){
    boolean dirAvailable = false;
    try{
        httpGetRequest.setHeader(HCPUtils.HTTP_AUTH_HEADER,"HCP "+ sEncodedUserName + ":" + sEncodedPassword);
        hitachiURI = constructURLForCheckDir(dirname);
        httpGetRequest.setURI(hitachiURI);
        HttpResponse httpResponse = httpClient.execute(httpGetRequest);
        int respCode = httpResponse.getStatusLine().getStatusCode();
        if (respCode == 200){
            dirAvailable = true;
            logger.info("A directory named "+dirname +" is avaliable");
        }
        logger.info(respCode);
    }
    catch(Exception e){
        logger.error("An exception occured while checking for "+dirname + e.getMessage());
    }
    return dirAvailable;
}

public Map<String, Integer> storeFilenamesAtHitachi(List<File> filenames,String dirname){
    Map<String,Integer> resultMap = new HashMap<String, Integer>();
    try{
        File filename=null;
        httpPutRequest.setHeader(HCPUtils.HTTP_AUTH_HEADER,"HCP "+ sEncodedUserName + ":" + sEncodedPassword);
        Iterator<File> iter = filenames.iterator();
        while(iter.hasNext()){
            filename = iter.next();
            hitachiURI = constructURLForStorFilesAtHitachi(dirname, filename);
            httpPutRequest.setURI(hitachiURI);
            receivedFile = new FileInputStream(filename);
            httpPutRequest.setEntity(new InputStreamEntity(receivedFile, -1));
            HttpResponse httpPutResponse = httpClient.execute(httpPutRequest);
            int respCode = httpPutResponse.getStatusLine().getStatusCode();
            resultMap.put(filename.getName(), respCode);
            logger.info(resultMap);
            logger.info("Response code is :"+respCode +" while saving " +filename +" in directory " +dirname);
        }
    }
     catch(Exception e){
         logger.error("Got the following exception while storing files:" +e.getMessage());
     }
    return resultMap;
}

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Draft//EN">
<HTML>
<HEAD>
<TITLE>Error 415--Unsupported Media Type</TITLE>
</HEAD>
<BODY bgcolor="white">
<FONT FACE=Helvetica><BR CLEAR=all>
<TABLE border=0 cellspacing=5><TR><TD><BR CLEAR=all>
<FONT FACE="Helvetica" COLOR="black" SIZE="3"><H2>Error 415--Unsupported Media Type</H2>
</FONT></TD></TR>
</TABLE>
<TABLE border=0 width=100% cellpadding=10><TR><TD VALIGN=top WIDTH=100% BGCOLOR=white><FONT FACE="Courier New"><FONT FACE="Helvetica" SIZE="3"><H3>From RFC 2068 <i>Hypertext Transfer Protocol -- HTTP/1.1</i>:</H3>
</FONT><FONT FACE="Helvetica" SIZE="3"><H4>10.4.16 415 Unsupported Media Type</H4>
</FONT><P><FONT FACE="Courier New">The server is refusing to service the request because the entity of the request is in a format not supported by the requested resource for the requested method.</FONT></P>
</FONT></TD></TR>
</TABLE>

</BODY>
</HTML>

我的目标是获取文件列表并存储在服务器的特定目录中。

0 个答案:

没有答案