以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何用post方法替换API中的图片地址?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=39986)

--  作者:智友软件工作室
--  发布时间:2013/9/5 23:35:00
--  [求助]如何用post方法替换API中的图片地址?
https://apicn.faceplusplus.com/v2/detection/detect?url=http%3A%2F%2Ffaceplusplus.com%2Fstatic%2Fimg%2Fdemo%2F1.jpg&api_secret=YOUR_API_SECRET&api_key=YOUR_API_KEY

上面是一个api请求,目前url=http%3A%2F%2Ffaceplusplus.com%2Fstatic%2Fimg%2Fdemo%2F1.jpg这个是互联网的图片,现在如何使用post方法上传本地的图片去替换这个url呢?
求高手指教!

--  作者:Bin
--  发布时间:2013/9/6 8:36:00
--  
前提是对方服务器有这个图片才可以的,是不可以随便就上传东西到人家服务器的.
--  作者:智友软件工作室
--  发布时间:2013/9/6 9:56:00
--  
http://cn.faceplusplus.com/dev/api/detection/detectiondetect/
这个是他们的API接口说明,不知您有什么好的办法吗?网络的url已经成功,现在就是比对本地图片还不会了。
[此贴子已经被作者于2013-9-6 9:56:53编辑过]

--  作者:智友软件工作室
--  发布时间:2013/9/6 10:25:00
--  

常见问题FAQ

问:通过Face++ API上传图片的规格有什么要求吗?

答:有。图片文件大小不能超过3MB,可以是.jpg,.png,.gif等常见格式。但如果上传动态GIF,只会处理第一帧。此外,上传图片会被标准化为600*600像素的大小再进行后续计算。

问:通过HTTP POST方法上传图片时,有什么注意事项吗?

答: 通过 POST 上传图片时,发送的数据请使用 multipart/form-data 编码。事实上,目前所有API都接受GET求和以 multipart/form-data 或 application/x-www-form-urlencoded 编码的 POST 请求。



以上是官网的解答,应该可以上传图片到他们的服务器吧?


--  作者:Bin
--  发布时间:2013/9/6 10:38:00
--  
既然支持,你可以自行参考着做.
--  作者:智友软件工作室
--  发布时间:2013/9/6 10:49:00
--  
我现在是一点都不知道在狐表里该怎么做,您能给简单写写吗?给我个思路。
--  作者:Bin
--  发布时间:2013/9/6 10:54:00
--  
看半天,没看到上传的API在哪里,这个只能靠你自己了.
--  作者:智友软件工作室
--  发布时间:2013/9/6 10:56:00
--  
如果假设有个上传的API您能给我一段post上传二进制图片的代码吗?我就可以自己研究了。非常感谢您了!
--  作者:Bin
--  发布时间:2013/9/6 10:59:00
--  
这个要看是否有空余的时间帮你研究狐表以外的事情了.
--  作者:飞
--  发布时间:2013/9/6 11:05:00
--  

    \'正好前段时间开发一个IOS的APP后台接口,给你一段代码吧

    \'客户端HttpWebPost上传文件代码,在Visual studio 2010中写的,要放进Foxtable需要加一下命名空间

    Public Function HttpPostFile(ByVal url As String,
                                 ByVal timeOut As Integer,
                                 ByVal dicFile As Dictionary(Of String, String))

        Dim responseContent As String
        Dim memStream As New MemoryStream
        Dim webRequest As HttpWebRequest = HttpWebRequest.Create(url)
        \'边界符
        Dim boundary As String = "---------------" + DateTime.Now.Ticks.ToString("x")
        Dim beginBoundary As Byte() = Encoding.ASCII.GetBytes("--" & boundary & vbCrLf)
        Dim endBoundary As Byte() = Encoding.ASCII.GetBytes(vbCrLf & "--" & boundary & "--")

        Dim fileStream As FileStream = New FileStream(dicFile("img1"), FileMode.Open, FileAccess.Read)

        \'设置属性
        webRequest.Method = "POST"
        webRequest.Timeout = timeOut
        webRequest.C & boundary

        memStream.Write(beginBoundary, 0, beginBoundary.Length)

        \'写入文件1
        Dim header As String = "Content-Disposition: form-data; name=""img1"";filename=""" & FileIO.FileSystem.GetName(dicFile("img1")) & """" & vbCrLf &
                                "Content-Type: application/-image" & vbCrLf & vbCrLf
        Dim headerbytes As Byte() = Encoding.UTF8.GetBytes(header)
        memStream.Write(headerbytes, 0, headerbytes.Length)

        Dim buffer(1024) As Byte
        Dim bytesRead As Integer = fileStream.Read(buffer, 0, buffer.Length)
        While bytesRead > 0
            memStream.Write(buffer, 0, bytesRead)
            bytesRead = fileStream.Read(buffer, 0, buffer.Length)
        End While

        memStream.Write(Encoding.ASCII.GetBytes(vbCrLf & "--" & boundary & vbCrLf), 0, beginBoundary.Length)

        \'写入文件2
        header = vbCrLf & "Content-Disposition: form-data; name=""img2"";filename=""" & FileIO.FileSystem.GetName(dicFile("img2")) & """" & vbCrLf &
                                "Content-Type: application/-image" & vbCrLf & vbCrLf
        headerbytes = Encoding.UTF8.GetBytes(header)
        memStream.Write(headerbytes, 0, headerbytes.Length)
        fileStream = New FileStream(dicFile("img1"), FileMode.Open, FileAccess.Read)
        bytesRead = fileStream.Read(buffer, 0, buffer.Length)
        While bytesRead > 0
            memStream.Write(buffer, 0, bytesRead)
            bytesRead = fileStream.Read(buffer, 0, buffer.Length)
        End While

        \'写入最后的结束边界符
        memStream.Write(endBoundary, 0, endBoundary.Length)
        webRequest.ContentLength = memStream.Length
        Dim requestStream As Stream = webRequest.GetRequestStream
        memStream.Position = 0
        Dim tempBuffer(memStream.Length - 1) As Byte
        memStream.Read(tempBuffer, 0, tempBuffer.Length)
        memStream.Close()

        requestStream.Write(tempBuffer, 0, tempBuffer.Length)
        requestStream.Close()

        Dim httpWebResponse As WebResponse = webRequest.GetResponse
        Using httpStreamReader As New StreamReader(httpWebResponse.GetResponseStream, Encoding.GetEncoding("utf-8"))
            responseContent = httpStreamReader.ReadToEnd
        End Using
        fileStream.Close()
        httpWebResponse.Close()
        webRequest.Abort()

        Return responseContent

    End Function


    \'调用方法

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim token As String = "aaf3308d-8205-4415-9d62-4a27763cc5b2"

        Dim url As String = "http://........../CustomerMobile.asmx"

        Dim dicFile As New Dictionary(Of String, String)
        dicFile.Add("img1", "d:\\aaa.xls")
        dicFile.Add("img2", "d:\\yumtown.ipa")
        MsgBox(HttpPostFile(url & "/SubmitEnquiry?user_id=KH/222&uploadfile=1&enquiry_id=XP-1307013&token=" & token,
             10000, dicFile))
        dicFile = Nothing
    End Sub

 

 

[此贴子已经被作者于2013-9-6 11:12:03编辑过]