更改大文件上传逻辑
This commit is contained in:
parent
fac0ede488
commit
3c7fec07f3
@ -239,7 +239,7 @@ func TestHotLogin(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestFriendHelper(t *testing.T) {
|
func TestFriendHelper(t *testing.T) {
|
||||||
bot := defaultBot()
|
bot := defaultBot(Desktop)
|
||||||
if err := bot.HotLogin(NewJsonFileHotReloadStorage("2.json"), true); err != nil {
|
if err := bot.HotLogin(NewJsonFileHotReloadStorage("2.json"), true); err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
return
|
return
|
||||||
@ -254,11 +254,9 @@ func TestFriendHelper(t *testing.T) {
|
|||||||
t.Error(err)
|
t.Error(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
f, _ := os.Open("webwxgetmsgimg.jpeg")
|
f, _ := os.Open("webwxgetmsgimg.jpg")
|
||||||
//f, _ := os.Open("2.jpeg")
|
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
msg, err := fh.SendImage(f)
|
msg, err := fh.SendImage(f)
|
||||||
//msg, err := fh.SendText("hh")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
return
|
return
|
||||||
|
@ -2,7 +2,6 @@ package openwechat
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -220,8 +219,7 @@ func (c *Caller) WebWxSendImageMsg(file *os.File, request *BaseRequest, info *Lo
|
|||||||
return nil, resp.Err()
|
return nil, resp.Err()
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
data, _ := resp.ReadAll()
|
|
||||||
fmt.Println(string(data))
|
|
||||||
var item struct {
|
var item struct {
|
||||||
BaseResponse BaseResponse
|
BaseResponse BaseResponse
|
||||||
MediaId string
|
MediaId string
|
||||||
|
51
client.go
51
client.go
@ -388,32 +388,37 @@ func (c *Client) WebWxUploadMediaByChunk(file *os.File, request *BaseRequest, in
|
|||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
|
|
||||||
for chunk := 0; int64(chunk) < chunks; chunk++ {
|
for chunk := 0; int64(chunk) < chunks; chunk++ {
|
||||||
content := map[string]interface{}{
|
|
||||||
"id": "WU_FILE_0",
|
|
||||||
"name": file.Name(),
|
|
||||||
"type": contentType,
|
|
||||||
"lastModifiedDate": sate.ModTime().Format(TimeFormat),
|
|
||||||
"size": sate.Size(),
|
|
||||||
"mediatype": mediaType,
|
|
||||||
"webwx_data_ticket": webWxDataTicket,
|
|
||||||
"pass_ticket": info.PassTicket,
|
|
||||||
"chunks": chunks,
|
|
||||||
"chunk": chunk,
|
|
||||||
}
|
|
||||||
body, err := ToBuffer(content)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
writer := multipart.NewWriter(body)
|
|
||||||
if err = writer.WriteField("uploadmediarequest", string(uploadMediaRequestByte)); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
var isLastTime bool
|
var isLastTime bool
|
||||||
if int64(chunk)+1 == chunks {
|
if int64(chunk)+1 == chunks {
|
||||||
isLastTime = true
|
isLastTime = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
content := map[string]string{
|
||||||
|
"id": "WU_FILE_0",
|
||||||
|
"name": file.Name(),
|
||||||
|
"type": contentType,
|
||||||
|
"lastModifiedDate": sate.ModTime().Format(TimeFormat),
|
||||||
|
"size": strconv.FormatInt(sate.Size(), 10),
|
||||||
|
"mediatype": mediaType,
|
||||||
|
"webwx_data_ticket": webWxDataTicket,
|
||||||
|
"pass_ticket": info.PassTicket,
|
||||||
|
"chunks": strconv.FormatInt(chunks, 10),
|
||||||
|
"chunk": strconv.Itoa(chunk),
|
||||||
|
}
|
||||||
|
var formBuffer bytes.Buffer
|
||||||
|
|
||||||
|
writer := multipart.NewWriter(&formBuffer)
|
||||||
|
if err = writer.WriteField("uploadmediarequest", string(uploadMediaRequestByte)); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v := range content {
|
||||||
|
if err := writer.WriteField(k, v); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if w, err := writer.CreateFormFile("filename", file.Name()); err != nil {
|
if w, err := writer.CreateFormFile("filename", file.Name()); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
@ -432,12 +437,8 @@ func (c *Client) WebWxUploadMediaByChunk(file *os.File, request *BaseRequest, in
|
|||||||
if err = writer.Close(); err != nil {
|
if err = writer.Close(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
req, _ := http.NewRequest(http.MethodPost, path.String(), body)
|
req, _ := http.NewRequest(http.MethodPost, path.String(), &formBuffer)
|
||||||
req.Header.Set("Content-Type", ct)
|
req.Header.Set("Content-Type", ct)
|
||||||
//req.Header.Add("Referer", c.baseUrl)
|
|
||||||
//req.Header.Add("Origin", c.baseUrl)
|
|
||||||
//// Host: file.wx2.qq.com
|
|
||||||
//req.Header.Add("Host", "file.wx2.qq.com")
|
|
||||||
// 发送数据
|
// 发送数据
|
||||||
resp, err = c.Do(req)
|
resp, err = c.Do(req)
|
||||||
|
|
||||||
|
22
stroage.go
22
stroage.go
@ -34,27 +34,13 @@ type JsonFileHotReloadStorage struct {
|
|||||||
|
|
||||||
// 将信息写入json文件
|
// 将信息写入json文件
|
||||||
func (f *JsonFileHotReloadStorage) Dump(cookies map[string][]*http.Cookie, req *BaseRequest, info *LoginInfo) error {
|
func (f *JsonFileHotReloadStorage) Dump(cookies map[string][]*http.Cookie, req *BaseRequest, info *LoginInfo) error {
|
||||||
var (
|
|
||||||
file *os.File
|
|
||||||
err error
|
|
||||||
)
|
|
||||||
_, err = os.Stat(f.filename)
|
|
||||||
if err != nil {
|
|
||||||
if os.IsNotExist(err) {
|
|
||||||
file, err = os.Create(f.filename)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if file == nil {
|
file, err := os.OpenFile(f.filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, os.ModePerm)
|
||||||
file, err = os.Open(f.filename)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
f.Cookie = cookies
|
f.Cookie = cookies
|
||||||
@ -72,6 +58,7 @@ func (f *JsonFileHotReloadStorage) Dump(cookies map[string][]*http.Cookie, req *
|
|||||||
// 从文件中读取信息
|
// 从文件中读取信息
|
||||||
func (f *JsonFileHotReloadStorage) Load() error {
|
func (f *JsonFileHotReloadStorage) Load() error {
|
||||||
file, err := os.Open(f.filename)
|
file, err := os.Open(f.filename)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -80,7 +67,8 @@ func (f *JsonFileHotReloadStorage) Load() error {
|
|||||||
if _, err := buffer.ReadFrom(file); err != nil {
|
if _, err := buffer.ReadFrom(file); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return json.Unmarshal(buffer.Bytes(), f)
|
err = json.Unmarshal(buffer.Bytes(), f)
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *JsonFileHotReloadStorage) GetCookie() map[string][]*http.Cookie {
|
func (f *JsonFileHotReloadStorage) GetCookie() map[string][]*http.Cookie {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user