Как загрузить blob и конвертировать в изображение в webapi - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь загрузить большой двоичный объект, созданный из изображения, на мой сервер, а затем преобразовать большой двоичный объект в изображение и сохранить его в C # webapi.Я создал холст для хранения своего изображения и преобразовал его в файл base64.Ниже приведен мой код JavaScript.

    var blob = canvas.toDataURL("image/jpeg"); // This will save your image as a 
                //jpeg file in the base64 format.
                var jpegFile64 = blob.replace(/^data:image\/(png|jpeg);base64,/, "");
                var jpegBlob = base64ToBlob(jpegFile64, 'image/jpeg');
                var data = new FormData();
                data.append("mypic", jpegBlob, "thisimage.jpg");
                var oReq = new XMLHttpRequest();
                oReq.open("POST", "http://localhost:52704/api/uploadfile/myfile.jpg/", true);
                oReq.onload = function (oEvent) {
                     alert(this.responseText);
                     };
                oReq.send(data);
      }

       function base64ToBlob(base64, mime) {
        mime = mime || '';
        var sliceSize = 1024;
        var byteChars = window.atob(base64);
        var byteArrays = [];

        for (var offset = 0, len = byteChars.length; offset < len; offset += sliceSize) {
            var slice = byteChars.slice(offset, offset + sliceSize);

            var byteNumbers = new Array(slice.length);
            for (var i = 0; i < slice.length; i++) {
                byteNumbers[i] = slice.charCodeAt(i);
            }

            var byteArray = new Uint8Array(byteNumbers);

            byteArrays.push(byteArray);
        }

        return new Blob(byteArrays, { type: mime });
    }

Ниже приведен код моего сервера webapi на C #.Файл сохраняется как «thisimage.jpg», как добавлено в моих данных формы в javascript.

      public string Post(string id)
    {
        string result = null;
        var httpRequest = HttpContext.Current.Request;
        string count = httpRequest.Files.Count.ToString();

            if (httpRequest.Files.Count > 0)
            {
                var postedFile = httpRequest.Files[0];
                var filePath = "c:/inetpub/wwwroot/pics/" + postedFile.Filename;
                postedFile.SaveAs(filePath);
     //  File is saved as "thisimage.jpg" 
            result = "File saved as " + filePath;
            }

        else
        {
            result = "Upload failed";
        }
        return result;
    }

1 Ответ

0 голосов
/ 29 мая 2018

Теперь работает!У меня была опечатка в моем адресе отправленного файла.Итак, теперь это работает, и это пример того, как загрузить большой двоичный объект на сервер, используя Webapi и javascript.Я добавил в свое сообщение строковое значение id и использовал его, чтобы дать файлу имя.

...