Skip to content

Commit f107bd2

Browse files
committed
增加临时文件目录配置
在下载多媒体文件下载时可以指定临时文件目录。
1 parent 50949b1 commit f107bd2

File tree

8 files changed

+88
-8
lines changed

8 files changed

+88
-8
lines changed

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/fs/FileUtils.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,25 @@
77

88
public class FileUtils {
99

10+
1011
/**
1112
* 创建临时文件
1213
* @param inputStream
1314
* @param name 文件名
1415
* @param ext 扩展名
16+
* @param tmpDirFile 临时文件夹目录
1517
* @return
1618
* @throws IOException
1719
*/
18-
public static File createTmpFile(InputStream inputStream, String name, String ext) throws IOException {
20+
public static File createTmpFile(InputStream inputStream, String name, String ext, File tmpDirFile) throws IOException {
1921
FileOutputStream fos = null;
2022
try {
21-
File tmpFile = File.createTempFile(name, '.' + ext);
23+
File tmpFile;
24+
if (tmpDirFile == null) {
25+
tmpFile = File.createTempFile(name, '.' + ext);
26+
} else {
27+
tmpFile = File.createTempFile(name, '.' + ext, tmpDirFile);
28+
}
2229
tmpFile.deleteOnExit();
2330
fos = new FileOutputStream(tmpFile);
2431
int read = 0;
@@ -43,5 +50,17 @@ public static File createTmpFile(InputStream inputStream, String name, String ex
4350
}
4451
}
4552
}
53+
54+
/**
55+
* 创建临时文件
56+
* @param inputStream
57+
* @param name 文件名
58+
* @param ext 扩展名
59+
* @return
60+
* @throws IOException
61+
*/
62+
public static File createTmpFile(InputStream inputStream, String name, String ext) throws IOException {
63+
return createTmpFile(inputStream, name, ext, null);
64+
}
4665

4766
}

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/MediaDownloadRequestExecutor.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,18 @@
2525
*
2626
*/
2727
public class MediaDownloadRequestExecutor implements RequestExecutor<File, String> {
28+
29+
private File tmpDirFile;
30+
31+
public MediaDownloadRequestExecutor() {
32+
super();
33+
}
34+
35+
public MediaDownloadRequestExecutor(File tmpDirFile) {
36+
super();
37+
this.tmpDirFile = tmpDirFile;
38+
}
39+
2840

2941
@Override
3042
public File execute(CloseableHttpClient httpclient, HttpHost httpProxy, String uri, String queryParam) throws WxErrorException, ClientProtocolException, IOException {
@@ -59,7 +71,7 @@ public File execute(CloseableHttpClient httpclient, HttpHost httpProxy, String u
5971
return null;
6072
}
6173
String[] name_ext = fileName.split("\\.");
62-
File localFile = FileUtils.createTmpFile(inputStream, name_ext[0], name_ext[1]);
74+
File localFile = FileUtils.createTmpFile(inputStream, name_ext[0], name_ext[1], tmpDirFile);
6375
return localFile;
6476
}
6577

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpConfigStorage.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package me.chanjar.weixin.cp.api;
22

3+
import java.io.File;
4+
35
import me.chanjar.weixin.common.bean.WxAccessToken;
46

57
/**
@@ -58,5 +60,7 @@ public interface WxCpConfigStorage {
5860
public String getHttp_proxy_username();
5961

6062
public String getHttp_proxy_password();
63+
64+
public File getTmpDirFile();
6165

6266
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpInMemoryConfigStorage.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package me.chanjar.weixin.cp.api;
22

3+
import java.io.File;
4+
35
import me.chanjar.weixin.common.bean.WxAccessToken;
46

57
/**
@@ -28,6 +30,8 @@ public class WxCpInMemoryConfigStorage implements WxCpConfigStorage {
2830
protected volatile String jsapiTicket;
2931
protected volatile long jsapiTicketExpiresTime;
3032

33+
protected volatile File tmpDirFile;
34+
3135
public String getAccessToken() {
3236
return this.accessToken;
3337
}
@@ -189,7 +193,16 @@ public String toString() {
189193
", http_proxy_password='" + http_proxy_password + '\'' +
190194
", jsapiTicket='" + jsapiTicket + '\'' +
191195
", jsapiTicketExpiresTime='" + jsapiTicketExpiresTime + '\'' +
196+
", tmpDirFile='" + tmpDirFile + '\'' +
192197
'}';
193198
}
194199

200+
public File getTmpDirFile() {
201+
return tmpDirFile;
202+
}
203+
204+
public void setTmpDirFile(File tmpDirFile) {
205+
this.tmpDirFile = tmpDirFile;
206+
}
207+
195208
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpServiceImpl.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ public class WxCpServiceImpl implements WxCpService {
7878

7979
protected WxSessionManager sessionManager = new StandardSessionManager();
8080

81+
/**
82+
* 临时文件目录
83+
*/
84+
protected File tmpDirFile;
85+
8186
public boolean checkSignature(String msgSignature, String timestamp, String nonce, String data) {
8287
try {
8388
return SHA1.gen(wxCpConfigStorage.getToken(), timestamp, nonce, data).equals(msgSignature);
@@ -236,7 +241,8 @@ public WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErr
236241

237242
public File mediaDownload(String media_id) throws WxErrorException {
238243
String url = "https://qyapi.weixin.qq.com/cgi-bin/media/get";
239-
return execute(new MediaDownloadRequestExecutor(), url, "media_id=" + media_id);
244+
245+
return execute(new MediaDownloadRequestExecutor(wxCpConfigStorage.getTmpDirFile()), url, "media_id=" + media_id);
240246
}
241247

242248

@@ -638,6 +644,14 @@ public WxSession getSession(String id, boolean create) {
638644
public void setSessionManager(WxSessionManager sessionManager) {
639645
this.sessionManager = sessionManager;
640646
}
647+
648+
public File getTmpDirFile() {
649+
return tmpDirFile;
650+
}
651+
652+
public void setTmpDirFile(File tmpDirFile) {
653+
this.tmpDirFile = tmpDirFile;
654+
}
641655

642656
public static void main(String[] args) {
643657
Float a = 3.1f;

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package me.chanjar.weixin.mp.api;
22

3+
import java.io.File;
4+
35
import me.chanjar.weixin.common.bean.WxAccessToken;
46

57
/**
@@ -68,7 +70,8 @@ public interface WxMpConfigStorage {
6870

6971
public String getHttp_proxy_username();
7072

71-
7273
public String getHttp_proxy_password();
74+
75+
public File getTmpDirFile();
7376

7477
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package me.chanjar.weixin.mp.api;
22

3+
import java.io.File;
4+
35
import me.chanjar.weixin.common.bean.WxAccessToken;
46

57
/**
@@ -11,8 +13,8 @@ public class WxMpInMemoryConfigStorage implements WxMpConfigStorage {
1113

1214
protected volatile String appId;
1315
protected volatile String secret;
14-
protected volatile String partnerId;
15-
protected volatile String partnerKey;
16+
protected volatile String partnerId;
17+
protected volatile String partnerKey;
1618
protected volatile String token;
1719
protected volatile String accessToken;
1820
protected volatile String aesKey;
@@ -28,6 +30,11 @@ public class WxMpInMemoryConfigStorage implements WxMpConfigStorage {
2830
protected volatile String jsapiTicket;
2931
protected volatile long jsapiTicketExpiresTime;
3032

33+
/**
34+
* 临时文件目录
35+
*/
36+
protected volatile File tmpDirFile;
37+
3138
public String getAccessToken() {
3239
return this.accessToken;
3340
}
@@ -181,6 +188,7 @@ public String toString() {
181188
", http_proxy_password='" + http_proxy_password + '\'' +
182189
", jsapiTicket='" + jsapiTicket + '\'' +
183190
", jsapiTicketExpiresTime='" + jsapiTicketExpiresTime + '\'' +
191+
", tmpDirFile='" + tmpDirFile + '\'' +
184192
'}';
185193
}
186194

@@ -201,4 +209,9 @@ public String getPartnerKey() {
201209
public void setPartnerKey(String partnerKey) {
202210
this.partnerKey = partnerKey;
203211
}
212+
213+
@Override
214+
public File getTmpDirFile() {
215+
return this.getTmpDirFile();
216+
}
204217
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.google.gson.reflect.TypeToken;
88
import com.google.gson.stream.JsonReader;
99
import com.thoughtworks.xstream.XStream;
10+
1011
import me.chanjar.weixin.common.bean.WxAccessToken;
1112
import me.chanjar.weixin.common.bean.WxMenu;
1213
import me.chanjar.weixin.common.bean.WxJsapiSignature;
@@ -27,6 +28,7 @@
2728
import me.chanjar.weixin.mp.bean.result.*;
2829
import me.chanjar.weixin.mp.util.http.QrCodeRequestExecutor;
2930
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
31+
3032
import org.apache.http.Consts;
3133
import org.apache.http.HttpHost;
3234
import org.apache.http.auth.AuthScope;
@@ -214,7 +216,7 @@ public WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErr
214216

215217
public File mediaDownload(String media_id) throws WxErrorException {
216218
String url = "http://file.api.weixin.qq.com/cgi-bin/media/get";
217-
return execute(new MediaDownloadRequestExecutor(), url, "media_id=" + media_id);
219+
return execute(new MediaDownloadRequestExecutor(wxMpConfigStorage.getTmpDirFile()), url, "media_id=" + media_id);
218220
}
219221

220222
public WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException {

0 commit comments

Comments
 (0)