当前位置: 首页 > 面试题库 >

将上传的图像发送到服务器并将其保存在服务器中

太叔繁
2023-03-14
问题内容

我要上传图像并将其保存在服务器中。我上传了图像并获得了预览,但是我被困在将图像发送到服务器上。我想使用角度服务将此图像发送到服务器。

这是HTML代码

<input type="file" fileread="vm.uploadme" />
<img src="{{vm.uploadme}}" width="100" height="50" alt="Image preview...">

这是指令

(function(){
    angular.module('appBuilderApp').directive("fileread", [function () {
        return {
            scope: {
                fileread: "="
            },
            link: function (scope, element, attributes) {
                element.bind("change", function (changeEvent) {
                    var reader = new FileReader();
                    reader.onload = function (loadEvent) {
                        scope.$apply(function () {
                            scope.fileread = loadEvent.target.result;
                        });
                    }
                    reader.readAsDataURL(changeEvent.target.files[0]);
                });
            }
        }
    }]);
})();

问题答案:

假设您在后端中期望Multipart,这是一段对我有用的代码。

这是一个jsfiddle。

var app = angular.module('myApp', [])



app.controller('MyController',



  function MyController($scope, $http) {



    //the image

    $scope.uploadme;



    $scope.uploadImage = function() {

      var fd = new FormData();

      var imgBlob = dataURItoBlob($scope.uploadme);

      fd.append('file', imgBlob);

      $http.post(

          'imageURL',

          fd, {

            transformRequest: angular.identity,

            headers: {

              'Content-Type': undefined

            }

          }

        )

        .success(function(response) {

          console.log('success', response);

        })

        .error(function(response) {

          console.log('error', response);

        });

    }





    //you need this function to convert the dataURI

    function dataURItoBlob(dataURI) {

      var binary = atob(dataURI.split(',')[1]);

      var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];

      var array = [];

      for (var i = 0; i < binary.length; i++) {

        array.push(binary.charCodeAt(i));

      }

      return new Blob([new Uint8Array(array)], {

        type: mimeString

      });

    }



  });





//your directive

app.directive("fileread", [

  function() {

    return {

      scope: {

        fileread: "="

      },

      link: function(scope, element, attributes) {

        element.bind("change", function(changeEvent) {

          var reader = new FileReader();

          reader.onload = function(loadEvent) {

            scope.$apply(function() {

              scope.fileread = loadEvent.target.result;

            });

          }

          reader.readAsDataURL(changeEvent.target.files[0]);

        });

      }

    }

  }

]);


<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp">

  <div ng-controller="MyController">

    <input type="file" fileread="uploadme" />

    <img src="{{uploadme}}" width="100" height="50" alt="Image preview...">

    <br/>

    <p>

      Image dataURI:

      <pre>{{uploadme}}</pre>

    </p>

    <br/>

    <button ng-click="uploadImage()">upload image</button>

  </div>

</div>

请注意 以下部分:

{
    transformRequest: angular.identity,
    headers: {
        'Content-Type': undefined
    }
}

是一些Angular魔术,为了使$ http解析FormData并找到正确的内容类型,等等。



 类似资料:
  • 问题内容: 我想随请求一起发送图像作为参数。我使用下面的代码调用POST请求,但是我不知道如何将图像追加到正文中。 我通过图像选择器获取图像,如下所示: 我的要求如下 我是Swift的新手。我已经通过multipart / form-data看到了这一点,但无法自己实现。我不想将其编码为基本64格式。请帮助我。 问题答案: 我使用以下结构发送图像: 然后在函数中创建如下主体:

  • 在我的代码中,我通过java套接字将图像从PC传输到手机。一切正常,图片保存到手机上,没有问题。但问题出现了,有没有可能在屏幕上显示图像而不保存? 服务器代码: 客户端代码:

  • 问题内容: 我需要即时将画布图像数据上传到服务器(数据库),即,我需要创建一个带有input=file的表单,并在没有任何用户交互的情况下发布图像数据。 问题答案: 您不需要文件输入,只需使用Ajax 获取数据并将其发布到服务器即可。 请参阅MDN文档。 但是即使使用,您也无法在IE中获取图像数据。

  • 但我的观点是,我是靠自己学习的,如果没有解释,初学者很难理解,所以我所要求的只是一个解释,对整个过程的详细解释如果有人很难花时间在这个问题上,因为信不信由你,我发现这是到目前为止最难的话题,因为主要原因是没有关于整个过程的教程,也没有对初学者的解释,如果有人现在能解释概念,对明天将要学习的学生来说会更容易。因此,任何人谁可以解释这详细和如何上传过程的工作和一些步骤,以供参考,将非常感谢。 注意:假

  • 我正在尝试将发送到我的 Rails 服务器。但是,当我尝试构建它时,它会崩溃并给我错误 03-25 09:44:50.001 W/system . err£Java . util . concurrent . execution exception:Java . lang . nosuchmethod error:没有静态方法create(Ljava/lang/String;[Lorg/Apach

  • 我必须向服务器发送一个映像(我认为最好的选择是使用HttpURLConnection)并从它接收一个字符串答案。在我读过的不同的文档和web站点中,我研究了这样做的最佳方法是使用多伙伴关系。 1_做它是最好的解决方案吗? 2_我有一个错误,说Android Studio无法解析符号'multipartentity'。我读到,要解决它,我必须下载外部库。哪些是它们,我如何下载它们? 3_为此,我想在