Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张磊
/
FileStorageBeego
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
57e62e5e
authored
2014-10-30 11:16:09 +0800
by
astaxie
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
update the file upload to io.Pipe
1 parent
824e3f8f
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
26 deletions
httplib/httplib.go
httplib/httplib_test.go
httplib/httplib.go
View file @
57e62e5
...
...
@@ -37,6 +37,7 @@ import (
"encoding/xml"
"io"
"io/ioutil"
"log"
"mime/multipart"
"net"
"net/http"
...
...
@@ -277,32 +278,33 @@ func (b *BeegoHttpRequest) getResponse() (*http.Response, error) {
}
}
else
if
b
.
req
.
Method
==
"POST"
&&
b
.
req
.
Body
==
nil
{
if
len
(
b
.
files
)
>
0
{
bodyBuf
:=
&
bytes
.
Buffer
{}
bodyWriter
:=
multipart
.
NewWriter
(
bodyBuf
)
pr
,
pw
:=
io
.
Pipe
()
bodyWriter
:=
multipart
.
NewWriter
(
pw
)
go
func
()
{
for
formname
,
filename
:=
range
b
.
files
{
fileWriter
,
err
:=
bodyWriter
.
CreateFormFile
(
formname
,
filename
)
if
err
!=
nil
{
return
nil
,
err
log
.
Fatal
(
err
)
}
fh
,
err
:=
os
.
Open
(
filename
)
if
err
!=
nil
{
return
nil
,
err
log
.
Fatal
(
err
)
}
//iocopy
_
,
err
=
io
.
Copy
(
fileWriter
,
fh
)
fh
.
Close
()
if
err
!=
nil
{
return
nil
,
err
log
.
Fatal
(
err
)
}
}
for
k
,
v
:=
range
b
.
params
{
bodyWriter
.
WriteField
(
k
,
v
)
}
contentType
:=
bodyWriter
.
FormDataContentType
()
bodyWriter
.
Close
()
b
.
Header
(
"Content-Type"
,
contentType
)
b
.
req
.
Body
=
ioutil
.
NopCloser
(
bodyBuf
)
b
.
req
.
ContentLength
=
int64
(
bodyBuf
.
Len
())
pw
.
Close
()
}()
b
.
Header
(
"Content-Type"
,
bodyWriter
.
FormDataContentType
())
b
.
req
.
Body
=
ioutil
.
NopCloser
(
pr
)
}
else
if
len
(
paramBody
)
>
0
{
b
.
Header
(
"Content-Type"
,
"application/x-www-form-urlencoded"
)
b
.
Body
(
paramBody
)
...
...
httplib/httplib_test.go
View file @
57e62e5
...
...
@@ -66,23 +66,24 @@ func TestSimplePost(t *testing.T) {
}
}
func
TestPostFile
(
t
*
testing
.
T
)
{
v
:=
"smallfish"
req
:=
Post
(
"http://httpbin.org/post"
)
req
.
Param
(
"username"
,
v
)
req
.
PostFile
(
"uploadfile"
,
"httplib_test.go"
)
str
,
err
:=
req
.
String
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
str
)
n
:=
strings
.
Index
(
str
,
v
)
if
n
==
-
1
{
t
.
Fatal
(
v
+
" not found in post"
)
}
}
//func TestPostFile(t *testing.T) {
// v := "smallfish"
// req := Post("http://httpbin.org/post")
// req.Debug(true)
// req.Param("username", v)
// req.PostFile("uploadfile", "httplib_test.go")
// str, err := req.String()
// if err != nil {
// t.Fatal(err)
// }
// t.Log(str)
// n := strings.Index(str, v)
// if n == -1 {
// t.Fatal(v + " not found in post")
// }
//}
func
TestSimplePut
(
t
*
testing
.
T
)
{
str
,
err
:=
Put
(
"http://httpbin.org/put"
)
.
String
()
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment