Click here to Skip to main content
15,848,157 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I'm trying to upload a file to azure storage through azure fucntion. I was successful in uploading plain text file but the files are getting corrupted for any other type of files. What I observed is that the bytes that I'm receiving are lesser than the actual size(bodyLength < contentLength).

I tried to change the request data type to
HttpRequestMessage<Optional<byte[]>>
HttpRequestMessage<byte[]> and Byte[] 
which is throwing cannot conver to string error as reported in byte[] input broken #239[^]

My requirement is to upload large files to storage. Any help can be appreciated.

What I have tried:

Java
@FunctionName("UploadFile")
    public HttpResponseMessage run(@HttpTrigger(name = "req", methods = { HttpMethod.GET,
            HttpMethod.POST }, authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context)
            throws InvalidKeyException, URISyntaxException, StorageException, IOException {
       
        CloudStorageAccount storageAccount = CloudStorageAccount.parse(_storageConnString);

        CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
        CloudBlobContainer blobContainer = blobClient.getContainerReference(_containerName);
            
        CloudBlockBlob blob = blobContainer.getBlockBlobReference(fileName);
        try {
           
            String body = request.getBody().get(); 
            long bodyLength = body.length();
            String contentLength = request.getHeaders().get("content-length");
            InputStream inputStream = new ByteArrayInputStream(body.getBytes());
            blob.upload(inputStream, Integer.parseInt(bodyLength));
           
        } catch (Exception ex) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body(ex.getMessage()).build();
        }

        return request.createResponseBuilder(HttpStatus.OK).body("File uploaded successfully").build();

    }
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900