使用FileInputStream和FileOutputStream上传大文件

时间:2017-06-30 11:25:30

标签: java grails fileinputstream fileoutputstream

        HttpExchange exchange;
        OutputStream responseBody = null;
        try{
          File fileVal = new File(file);
          InputStream inVal = new FileInputStream(fileVal);
          exchange.sendResponseHeaders(HTTP_OK, fileVal.length());
          responseBody = exchange.getResponseBody();
          int read;
          byte[] buffer = new byte[4096];
          while ((readVal = inVal.read(buffer)) != -1){
            responseBody.write(buffer, 0, readVal);
          }
        } catch (FileNotFoundException e){
          //uh-oh, the file doesn't exist
        } catch (IOException e){
          //uh-oh, there was a problem reading the file or sending the response
        } finally {
          if (responseBody != null){
            responseBody.close();
          }
        }

我想将大型视频文件上传为块。在进行操作时,我收到以下错误。

groovy.lang.GroovyRuntimeException: Could not find matching constructor for: java.io.File(org.springframework.web.multipart.commons.CommonsMultipartFile)

任何人都会指导我解决这个问题。

2 个答案:

答案 0 :(得分:0)

错误消息完美地描述了失败。类File没有构造函数接受类型为org.springframework.web.multipart.commons.CommonsMultipartFile的参数。

尝试使用要打开的文件的路径。例如:

String path = "/path/to/your/file.txt";
File fileVal = new File(path);

或者,您可以使用CommonsMultipartFile中的getInputStream()方法。

InputStream inVal = file.getInputStream();

答案 1 :(得分:0)

File fileVal = new File(file);

这里的文件是org.springframework.web.multipart.commons.CommonsMultipartFile类型,你试图通过在构造函数中传递CommonsMultipartFile对象来创建File对象,而File类没有CommonsMultipartFile类型的构造函数。

Check here for File Class Constructor

您需要从文件对象中获取字节并创建一个java.io.File对象。

Convert MultiPartFile into File