简体   繁体   中英

Unable to upload file with jersey

I am using this webservice to upload a file using jersey

public class upload {
@POST
@Path(value = "upload")
@Consumes("image/jpg")
public Response uploadPng(File file) throws IOException {
    file = new File("C:/Users/Marwa/Desktop/Capture.jpg");
    String uploadedFileLocation = "C:/Users/Desktop/" + file.getName();
    DataInputStream diStream =new DataInputStream(new FileInputStream(file));
    long len = (int) file.length();
    byte[] fileBytes = new byte[(int) len];
    int read = 0;
    int numRead = 0;
    while (read < fileBytes.length && (numRead =diStream.read(fileBytes, read,fileBytes.length - read)) >= 0) {
        read = read + numRead;
    }

// save it

    writeToFile(diStream, uploadedFileLocation);
    System.out.println("File uploaded to : " + uploadedFileLocation);
    return Response.status(200).entity(file).build();
  }

// save uploaded file to new location

private void writeToFile(InputStream uploadedInputStream,String uploadedFileLocation) {
    try {
        OutputStream out =new FileOutputStream(new File(uploadedFileLocation));
        int read = 0;
        byte[] bytes = new byte[1024];
        out = new FileOutputStream(new File(uploadedFileLocation));
        while ((read = uploadedInputStream.read(bytes)) != -1) {
            out.write(bytes, 0, read);
        }
        out.flush();
        out.close();
    } catch (IOException e) {
        e.printStackTrace();}}}

When I execute my code i get a 405 error !! Are there any suggestions to this issue?

public Response uploadPng(FormDataMultiPart multiPart) throws IOException {

上传文件时,应在要调用的方法中传递FormDataMultiPart参数。

Not sure if this is perfect solution. But solved similar problem by following approach.

First thing, you should use

public Response uploadPng(FormDataMultiPart multiPart) throws IOException {

Next to avoid 405 error add

@Produces(MediaType.TEXT_PLAIN) 

above uploadpng method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM