Alias Varghese
Alias Varghese

Reputation: 2170

Uploading file to azure file share from azure function app

I have a function app and azure fileshare. I want to upload a file from internet using the url to my azure file share storage.

  private ShareFileClient GetShareFile(string filePath)
    {
        string connectionString = "My connection string";

        return new ShareFileClient(connectionString, "temp", filePath);
    }

         ShareFileClient destFile = GetShareFile(filePath);

            // Start the copy operation
            await destFile.StartCopyAsync(new Uri(DownloadUrl));

But this code is not working as expected. It is throwing error "Unauthorized RequestId:000db1ff-801a-000a-0602-b24449000000 Time:2020-11-03T16:58:36.5697281Z Status: 401 (Unauthorized) ErrorCode: CannotVerifyCopySource" . Any helps will be highly appreciated

Upvotes: 0

Views: 4377

Answers (1)

suziki
suziki

Reputation: 14113

A simple code to write and read:

    string con_str = "DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;AccountKey=xxxxxx;EndpointSuffix=core.windows.net";
    string sharename = "test";
    string filename = "test.txt";
    string directoryname = "testdirectory";

    ShareServiceClient shareserviceclient = new ShareServiceClient(con_str);
    ShareClient shareclient = shareserviceclient.GetShareClient(sharename);
    ShareDirectoryClient sharedirectoryclient = shareclient.GetDirectoryClient(directoryname);

    //write data.
    ShareFileClient sharefileclient_in = sharedirectoryclient.CreateFile(filename,1000);
    string filecontent_in = "This is the content of the file.";
    byte[] byteArray = Encoding.UTF8.GetBytes(filecontent_in);
    MemoryStream stream1 = new MemoryStream(byteArray);
    stream1.Position = 0;
    sharefileclient_in.Upload(stream1);

    //read data.
    ShareFileClient sharefileclient_out = sharedirectoryclient.GetFileClient(filename);
    Stream stream2 = sharefileclient_out.Download().Value.Content;
    StreamReader reader = new StreamReader(stream2);
    string filecontent_out = reader.ReadToEnd();

Above code works fine on my side, you just need to convert file to stream first.

Upvotes: 4

Related Questions