类型没有dropbox(文件放)api使用? 和如何模仿它?

我正在阅读Dropbox API的files_put文档。

他们使用的URL路径是: https://api-content.dropbox.com/1/files_put/<root>/<path>?param=val : https://api-content.dropbox.com/1/files_put/<root>/<path>?param=val <root>/<path> https://api-content.dropbox.com/1/files_put/<root>/<path>?param=val ,请求正文持有该文件:

required需要上传的文件内容。 由于整个PUT正文将被视为文件,因此必须将任何参数作为请求URL的一部分传递。 请求URL应如同您对任何其他OAuth请求URL进行签名一样进行签名。

问题

  • 我很想知道这种类型的请求的内容类型是什么? (请求正文中的文件和url字符串中的参数)

  • 这个API的功能如何模仿? 特别是在Grails控制器中。 像这样的东西。

  • 如何在cURL 更新中测试这种类型的请求:我发现如何在此处使用curl进行测试。

  • 对于控制者,我设想了这样的事情

      def save () {
        withFormt {
          html {actForHTML}
          <something> {actForREST}
        }
      }
    
      def actForREST () {
         //how can I get access to the file? I guess url parameters can be accessed by `params`
      }
    

    REST控制台无法在请求正文中发送二进制数据。 不幸的是,我现在无法访问curl 。 但我对你的投入很少,而且我也会在我的个人机器上尝试。

  • 如何使用curl进行文件上传? (@source - cURL文档)

    4.3文件上传POST

    早在1995年,他们就定义了另一种通过HTTP发布数据的方法。 它在RFC 1867中有记载,为什么这种方法有时被称为RFC1867发布。

    这种方法主要是为了更好地支持文件上传而设计的。 一个允许用户上传文件的表单可以这样写在HTML中:

    <form method="POST" enctype='multipart/form-data' action="upload.cgi">
      <input type=file name=upload>
      <input type=submit name=press value="OK">
    </form>
    

    这清楚地表明即将发送的内容类型是多部分/表单数据。

    要使用curl发布到这种形式,请输入如下命令行:

        curl --form upload=@localfilename --form press=OK [URL]
    
  • W3C规范

    看看这里的W3C规范和RFC1867中的multipat / form-data

  • Grails控制器来处理请求

    你的应用程序应该能够处理multipart/form-data (我认为不需要添加任何MIME类型)。 你在控制器中的动作应该如下所示: -

  • 例如:

    def uploadFileAndGetParams(){
        def inputStream = request.getInputStream()
        byte[] buf = new byte[request.getHeaders().CONTENT_LENGTH] //Assuming
        //Read the input stream
        for (int chunk = inputStream.read(buf); chunk != -1; chunk = is.read(buf)){
            //Write it any output stream
            //Can refer the content-type of the file (following W3C spec)
            //and create an Output stream accordingly
        }
    
        //Get the params as well
        //params.foo //params.bar 
    }
    

    这可能不是充分的证据,但它应该比我想象的要复杂。 今天我会尝试一样的。 有用的职位看看。

    链接地址: http://www.djcxy.com/p/48647.html

    上一篇: type does dropbox (file put) api uses? and How to mimic it?

    下一篇: Post JSONArray to REST service