类型没有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?