更改大文件上传逻辑
This commit is contained in:
parent
fac0ede488
commit
3c7fec07f3
@ -239,7 +239,7 @@ func TestHotLogin(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestFriendHelper(t *testing.T) {
|
||||
bot := defaultBot()
|
||||
bot := defaultBot(Desktop)
|
||||
if err := bot.HotLogin(NewJsonFileHotReloadStorage("2.json"), true); err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
@ -254,11 +254,9 @@ func TestFriendHelper(t *testing.T) {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
f, _ := os.Open("webwxgetmsgimg.jpeg")
|
||||
//f, _ := os.Open("2.jpeg")
|
||||
f, _ := os.Open("webwxgetmsgimg.jpg")
|
||||
defer f.Close()
|
||||
msg, err := fh.SendImage(f)
|
||||
//msg, err := fh.SendText("hh")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
|
@ -2,7 +2,6 @@ package openwechat
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
@ -220,8 +219,7 @@ func (c *Caller) WebWxSendImageMsg(file *os.File, request *BaseRequest, info *Lo
|
||||
return nil, resp.Err()
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
data, _ := resp.ReadAll()
|
||||
fmt.Println(string(data))
|
||||
|
||||
var item struct {
|
||||
BaseResponse BaseResponse
|
||||
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
|
||||
|
||||
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
|
||||
if int64(chunk)+1 == chunks {
|
||||
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 {
|
||||
return nil, err
|
||||
} else {
|
||||
@ -432,12 +437,8 @@ func (c *Client) WebWxUploadMediaByChunk(file *os.File, request *BaseRequest, in
|
||||
if err = writer.Close(); err != nil {
|
||||
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.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)
|
||||
|
||||
|
22
stroage.go
22
stroage.go
@ -34,27 +34,13 @@ type JsonFileHotReloadStorage struct {
|
||||
|
||||
// 将信息写入json文件
|
||||
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.Open(f.filename)
|
||||
}
|
||||
file, err := os.OpenFile(f.filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, os.ModePerm)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer file.Close()
|
||||
|
||||
f.Cookie = cookies
|
||||
@ -72,6 +58,7 @@ func (f *JsonFileHotReloadStorage) Dump(cookies map[string][]*http.Cookie, req *
|
||||
// 从文件中读取信息
|
||||
func (f *JsonFileHotReloadStorage) Load() error {
|
||||
file, err := os.Open(f.filename)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -80,7 +67,8 @@ func (f *JsonFileHotReloadStorage) Load() error {
|
||||
if _, err := buffer.ReadFrom(file); err != nil {
|
||||
return err
|
||||
}
|
||||
return json.Unmarshal(buffer.Bytes(), f)
|
||||
err = json.Unmarshal(buffer.Bytes(), f)
|
||||
return err
|
||||
}
|
||||
|
||||
func (f *JsonFileHotReloadStorage) GetCookie() map[string][]*http.Cookie {
|
||||
|
Loading…
x
Reference in New Issue
Block a user