springboot使用Jersey客户端上传文件到服务器报错
报错结果如图

tomcat服务器可写权限已经打开,server.xml也配置了如图的

uploads文件夹里也没有冲突的文件名或者文件夹。

网上实在找不到别的办法了,求解答。
springboot使用Jersey客户端上传文件到服务器报错
报错结果如图

tomcat服务器可写权限已经打开,server.xml也配置了如图的

uploads文件夹里也没有冲突的文件名或者文件夹。

网上实在找不到别的办法了,求解答。
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言问题描述 当使用Spring Boot和Jersey客户端上传文件时,会出现报错: java.lang.IllegalArgumentException: Illegal character in path at index .. 尽管Tomcat服务器可写权限已经打开,并且uploads文件夹里也没有冲突的文件名或者文件夹。 解决方案 可能是由于上传的文件名包含非法字符所致。 在文件名中包含以下字符可能会导致问题: / \ ? % * : | " < > 为了解决这个问题,我们可以使用文件名解析方法进行转义。 在Jersey客户端上传文件时,可以使用MultiPartFeature和FormDataMultiPart类上传文件。 代码示例 以下是一个简单的示例,演示如何使用Jersey客户端上传文件: 1.在Spring Boot应用程序中添加以下依赖项: org.glassfish.jersey.media jersey-media-multipart 2.29.1 2.编写Jersey客户端代码: import org.glassfish.jersey.media.multipart.FormDataBodyPart; import org.glassfish.jersey.media.multipart.FormDataMultiPart; import org.glassfish.jersey.media.multipart.MultiPartFeature; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.io.File; public class FileUploader {
private static final String UPLOAD_URL = "http://localhost:8080/myapp/upload";
public void uploadFile(File fileToUpload) {
Client client = ClientBuilder.newBuilder().register(MultiPartFeature.class).build();
// Request entity for a multipart POST request
FormDataMultiPart multiPart = new FormDataMultiPart();
multiPart.bodyPart(new FormDataBodyPart("file", fileToUpload, MediaType.APPLICATION_OCTET_STREAM_TYPE));
// Response from the service
Response response = client.target(UPLOAD_URL).request().post(Entity.entity(multiPart, multiPart.getMediaType()));
// Response status
int status = response.getStatus();
System.out.println("Response Status: " + status);
// Response body
String responseBody = response.readEntity(String.class);
System.out.println("Response Body: " + responseBody);
// Close the client connection
client.close();
}
} 在上面的代码中,FileUploader 类使用 Jersey 客户端上传文件。要上传文件,请使用 FormDataMultiPart 类将文件实体添加到请求正文并将其发送到后端服务。 需要注意的是,这里我们使用 Entity.entity(multiPart, multiPart.getMediaType()) 将 formData 实体作为内容发送到服务器端。 可以使用以下代码调用上述上传方法: File fileToUpload = new File("path/to/file"); FileUploader fileUploader = new FileUploader(); fileUploader.uploadFile(fileToUpload); 这将上传给定文件并将响应内容输出到控制台。 总结 当使用Spring Boot和Jersey客户端上传文件到服务器时,可能会遇到“java.lang. IllegalArgumentException:在索引处的路径中非法字符…”错误。 该问题可以通过使用文件名解析方法转义文件名来解决。 Jersey客户端可使用 MultiPartFeature 和 FormDataMultiPart 类上传文件。