当前位置: 首页 > 知识库问答 >
问题:

文件上载Java Spring

汝彭薄
2023-03-14

我正在尝试用Java以块形式上载文件。
我的块上载功能

@Async
private Future<String> sendChunk(byte[] chunk, int start, int end, int numberOfChunks, String name, String sessionId) throws IOException {

    LinkedMultiValueMap<String, Object> requestParams = new LinkedMultiValueMap<>();
    requestParams.add("data", new String(java.util.Base64.getEncoder().encode(chunk), "UTF-8"));
    requestParams.add("start", start);
    requestParams.add("end", end);
    requestParams.add("numberOfChunks", numberOfChunks);
    requestParams.add("fileName", name);
    requestParams.add("session", sessionId);

    HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<>(requestParams);
    UploadResponse uploadResponse = restTemplate.exchange(fileServiceUrl, HttpMethod.POST, requestEntity, new ParameterizedTypeReference<UploadResponse>(){}).getBody();
    return new AsyncResult<>(uploadResponse.getSessionId());
}

这就是文件服务API的外观:

@RequestMapping(value = "/simpleUploader", method = RequestMethod.POST, produces = "application/json")
public ResponseEntity<UploadResponse> simpleUploader(
    @RequestParam("data") String data,
    @RequestParam("session") String sessionId,
    @RequestParam("start") int start,
    @RequestParam("end") int end,
    @RequestParam("numberOfChunks") int numberOfChunks,
    @RequestParam("fileName") String fileName) throws IOException {
    ....
}

共有1个答案

步博艺
2023-03-14

我的代码遇到的唯一问题是,当我第一次调用文件服务API时,“sessionid”将为null
当我将映射项的值设置为null时,整个项不会被传递。我不知道这一点。
我的修复方法是将defaultvalue添加到@requestparam(“session”)String sessionid中,以便方法声明如下所示:

@RequestMapping(value = "/simpleUploader", method = RequestMethod.POST, produces = "application/json")
public ResponseEntity<UploadResponse> simpleUploader(
    ...
    @RequestParam(value = "session", defaultValue = "") String sessionId,
    ... ) throws IOException {
    ....
}
 类似资料:
  • 我有一个表单,其中一个信息,用户将上传一个图像。我想将图像的路径存储在数据库中,并将图像保存到服务器上的文件夹中。 使用以下方法打开表单:

  • 嗨,我正在尝试使用多部分表单上传多个文件 我使用这个,但我得到了错误的请求状态,我如何上传多个文件?

  • 我正在尝试上载文件,但无法工作: 有用信息:运行IIS Express(使用PHP5.3)-Windows 7 Professional 32位 代码: move_uploaded_file($_FILES[图像][名称],/图像/。$_FILES["Imagem"]["name"])或die("Error:".print_r($_FILES)); 它打印:数组([imagem]= 我确信路径是正

  • 我想通过Shrine上载器gem上载一个xls文件(Libreoffice),但是我得到了一个回滚错误,比如文件类型必须是一个..(在我的initializers/Shrine.rb中有mime类型)。这是我的神殿 这是我的shrine_uploader.rb 我可以上传xlsx文件,但是我不明白为什么我不能上传xls文件,即使mime类型是application/vnd.ms-excel。 谢谢

  • 我正在IIS服务器上使用网站面板。我想使用ftp上载文件 我使用了以下代码: 这段代码运行没有错误。当我使用网站面板的文件管理器时,一个文件创建了“Name.ext”,但这个文件大小是0 KB。为什么?我有什么问题?! 我确信windows防火墙允许我这么做。 更新:我正在使用UploadFileTask和UploadFile(unasync)进行操作,但结果与async相同:(

  • 类型DiskFileUpload中的方法ParserRequest(HttpServletRequest,int,long,String)不适用于参数(HttpServletRequest) 当我以服务器的身份运行时...它会在控制台出现错误 这是我在此代码中的代码出错,因为类型DiskFileUpload中的方法parseRequest(HttpServletRequest,int,long,S