Skip to content

Commit 8d7722b

Browse files
author
joshua.yin
authored
Merge pull request #43 from JoshuaYin/master
2.5.2 * 修复bug:使用自定义域名时,远端文件名keyname未urlEncode,导致签名值不正确
2 parents b3355f9 + 5ed3039 commit 8d7722b

File tree

17 files changed

+360
-54
lines changed

17 files changed

+360
-54
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<dependency>
2626
<groupId>cn.ucloud.ufile</groupId>
2727
<artifactId>ufile-client-java</artifactId>
28-
<version>2.5.1</version>
28+
<version>2.5.2</version>
2929
</dependency>
3030
```
3131

@@ -36,7 +36,7 @@
3636
/*
3737
* your other dependencies
3838
*/
39-
implementation 'cn.ucloud.ufile:ufile-client-java:2.5.1'
39+
implementation 'cn.ucloud.ufile:ufile-client-java:2.5.2'
4040
}
4141
```
4242

ufile-sample-java/pom.xml

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,52 @@
1010

1111
<build>
1212
<plugins>
13+
<!-- 编译插件-->
1314
<plugin>
1415
<groupId>org.apache.maven.plugins</groupId>
1516
<artifactId>maven-compiler-plugin</artifactId>
16-
<version>3.8.0</version>
17+
<version>3.8.1</version>
1718
<configuration>
1819
<source>1.8</source>
1920
<target>1.8</target>
21+
<encoding>UTF-8</encoding>
2022
</configuration>
2123
</plugin>
24+
25+
<plugin>
26+
<artifactId>maven-assembly-plugin</artifactId>
27+
<configuration>
28+
<archive>
29+
<manifest>
30+
<!--这里要替换成jar包main方法所在类 -->
31+
<mainClass>cn.ucloud.ufile.sample.object.TotalTest</mainClass>
32+
</manifest>
33+
<manifestEntries>
34+
<Class-Path>.</Class-Path>
35+
</manifestEntries>
36+
</archive>
37+
<descriptorRefs>
38+
<descriptorRef>jar-with-dependencies</descriptorRef>
39+
</descriptorRefs>
40+
</configuration>
41+
<executions>
42+
<execution>
43+
<id>make-assembly</id> <!-- this is used for inheritance merges -->
44+
<phase>package</phase> <!-- 指定在打包节点执行jar包合并操作 -->
45+
<goals>
46+
<goal>single</goal>
47+
</goals>
48+
</execution>
49+
</executions>
50+
</plugin>
2251
</plugins>
2352
</build>
2453

2554
<dependencies>
2655
<dependency>
2756
<groupId>cn.ucloud.ufile</groupId>
2857
<artifactId>ufile-client-java</artifactId>
29-
<version>2.5.1</version>
58+
<version>2.5.2</version>
3059
</dependency>
3160
</dependencies>
3261

ufile/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<groupId>cn.ucloud.ufile</groupId>
88
<artifactId>ufile</artifactId>
99
<packaging>pom</packaging>
10-
<version>2.5.1</version>
10+
<version>2.5.2</version>
1111

1212
<modules>
1313
<module>ufile-core</module>
-1.52 KB
Binary file not shown.

ufile/ufile-client-java/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
<parent>
77
<artifactId>ufile</artifactId>
88
<groupId>cn.ucloud.ufile</groupId>
9-
<version>2.5.1</version>
9+
<version>2.5.2</version>
1010
</parent>
1111

1212
<artifactId>ufile-client-java</artifactId>
13-
<version>2.5.1</version>
13+
<version>2.5.2</version>
1414

1515
<dependencies>
1616
<dependency>
@@ -26,7 +26,7 @@
2626
<dependency>
2727
<groupId>cn.ucloud.ufile</groupId>
2828
<artifactId>ufile-core</artifactId>
29-
<version>2.5.1</version>
29+
<version>2.5.2</version>
3030
</dependency>
3131
</dependencies>
3232

ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/CopyObjectApi.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,11 @@
99
import cn.ucloud.ufile.exception.UfileServerException;
1010
import cn.ucloud.ufile.http.HttpClient;
1111
import cn.ucloud.ufile.http.request.PutJsonRequestBuilder;
12-
import cn.ucloud.ufile.util.FileUtil;
13-
import cn.ucloud.ufile.util.HttpMethod;
14-
import cn.ucloud.ufile.util.MetadataDirective;
15-
import cn.ucloud.ufile.util.Parameter;
12+
import cn.ucloud.ufile.util.*;
1613
import com.google.gson.JsonElement;
1714
import okhttp3.Response;
1815

1916
import java.io.UnsupportedEncodingException;
20-
import java.net.URLEncoder;
2117
import java.util.*;
2218

2319
/**
@@ -169,9 +165,8 @@ protected void prepareData() throws UfileClientException {
169165

170166
try {
171167
xUfileCopySource = new StringBuilder("/")
172-
.append(URLEncoder.encode(srcBucketName, "UTF-8").replace("+", "%20"))
173-
.append("/")
174-
.append(URLEncoder.encode(srcKeyName, "UTF-8").replace("+", "%20"))
168+
.append(Encoder.urlEncode(srcBucketName, "UTF-8")).append("/")
169+
.append(Encoder.urlEncode(srcKeyName, "UTF-8"))
175170
.toString();
176171
} catch (UnsupportedEncodingException e) {
177172
throw new UfileClientException("Occur error during URLEncode srcBucketName and srcKeyName", e);

ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPrivateUrlApi.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import cn.ucloud.ufile.exception.UfileRequiredParamNotFoundException;
99
import cn.ucloud.ufile.auth.ObjectAuthorizer;
1010
import cn.ucloud.ufile.http.request.GetRequestBuilder;
11+
import cn.ucloud.ufile.util.Encoder;
1112
import cn.ucloud.ufile.util.HttpMethod;
1213
import cn.ucloud.ufile.util.Parameter;
1314
import com.google.gson.JsonElement;
@@ -146,7 +147,7 @@ public String createUrl() throws UfileClientException {
146147

147148
if (attachmentFileName != null && !attachmentFileName.isEmpty()) {
148149
try {
149-
attachmentFileName = URLEncoder.encode(attachmentFileName, "UTF-8").replace("+", "%20");
150+
attachmentFileName = Encoder.urlEncode(attachmentFileName, "UTF-8");
150151
builder.addParam(new Parameter("ufileattname", attachmentFileName));
151152
} catch (UnsupportedEncodingException e) {
152153
throw new UfileClientException("Occur error during URLEncode attachmentFileName", e);
@@ -206,12 +207,10 @@ private String generateFinalHost(String bucketName, String keyName) throws Ufile
206207
return String.format("%s/%s", objectConfig.getCustomHost(), keyName);
207208

208209
try {
209-
bucketName = URLEncoder.encode(bucketName, "UTF-8").replace("+", "%20");
210-
String region = URLEncoder.encode(objectConfig.getRegion(), "UTF-8")
211-
.replace("+", "%20");
212-
String proxySuffix = URLEncoder.encode(objectConfig.getProxySuffix(), "UTF-8")
213-
.replace("+", "%20");
214-
keyName = URLEncoder.encode(keyName, "UTF-8").replace("+", "%20");
210+
bucketName = Encoder.urlEncode(bucketName, "UTF-8");
211+
String region = Encoder.urlEncode(objectConfig.getRegion(), "UTF-8");
212+
String proxySuffix = Encoder.urlEncode(objectConfig.getProxySuffix(), "UTF-8");
213+
keyName = Encoder.urlEncode(keyName, "UTF-8");
215214
return new StringBuilder(objectConfig.getProtocol().getValue())
216215
.append(String.format("%s.%s.%s/%s", bucketName, region, proxySuffix, keyName)).toString();
217216
} catch (UnsupportedEncodingException e) {

ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPublicUrlApi.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import cn.ucloud.ufile.exception.UfileParamException;
55
import cn.ucloud.ufile.exception.UfileRequiredParamNotFoundException;
66
import cn.ucloud.ufile.http.request.GetRequestBuilder;
7+
import cn.ucloud.ufile.util.Encoder;
78
import cn.ucloud.ufile.util.Parameter;
89

910
import java.io.UnsupportedEncodingException;
@@ -98,7 +99,7 @@ public String createUrl() throws UfileClientException {
9899

99100
if (attachmentFileName != null && !attachmentFileName.isEmpty()) {
100101
try {
101-
attachmentFileName = URLEncoder.encode(attachmentFileName, "UTF-8").replace("+", "%20");
102+
attachmentFileName = Encoder.urlEncode(attachmentFileName, "UTF-8");
102103
builder.addParam(new Parameter("ufileattname", attachmentFileName));
103104
} catch (UnsupportedEncodingException e) {
104105
throw new UfileClientException("Occur error during URLEncode attachmentFileName", e);
@@ -126,12 +127,10 @@ private String generateFinalHost(String bucketName, String keyName) throws Ufile
126127
return String.format("%s/%s", objectConfig.getCustomHost(), keyName);
127128

128129
try {
129-
bucketName = URLEncoder.encode(bucketName, "UTF-8").replace("+", "%20");
130-
String region = URLEncoder.encode(objectConfig.getRegion(), "UTF-8")
131-
.replace("+", "%20");
132-
String proxySuffix = URLEncoder.encode(objectConfig.getProxySuffix(), "UTF-8")
133-
.replace("+", "%20");
134-
keyName = URLEncoder.encode(keyName, "UTF-8").replace("+", "%20");
130+
bucketName = Encoder.urlEncode(bucketName, "UTF-8");
131+
String region = Encoder.urlEncode(objectConfig.getRegion(), "UTF-8");
132+
String proxySuffix = Encoder.urlEncode(objectConfig.getProxySuffix(), "UTF-8");
133+
keyName = Encoder.urlEncode(keyName, "UTF-8");
135134
return new StringBuilder(objectConfig.getProtocol().getValue())
136135
.append(String.format("%s.%s.%s/%s", bucketName, region, proxySuffix, keyName)).toString();
137136
} catch (UnsupportedEncodingException e) {

ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/util/MimeTypeUtil.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.google.gson.JsonObject;
77

88
import java.io.File;
9+
import java.io.IOException;
910

1011
/**
1112
* @description:
@@ -15,8 +16,18 @@
1516
*/
1617
public class MimeTypeUtil {
1718
private static String TAG = "MimeTypeUtil";
18-
private static final String MIME_TYPE_JSONSTR = "{\"\":\"application/octet-stream\",\"323\":\"text/h323\",\"acx\":\"application/internet-property-stream\",\"ai\":\"application/postscript\",\"aif\":\"audio/x-aiff\",\"aifc\":\"audio/x-aiff\",\"aiff\":\"audio/x-aiff\",\"asf\":\"video/x-ms-asf\",\"asr\":\"video/x-ms-asf\",\"asx\":\"video/x-ms-asf\",\"au\":\"audio/basic\",\"avi\":\"video/x-msvideo\",\"axs\":\"application/olescript\",\"bas\":\"text/plain\",\"bcpio\":\"application/x-bcpio\",\"bin\":\"application/octet-stream\",\"bmp\":\"image/bmp\",\"c\":\"text/plain\",\"cat\":\"application/vnd.ms-pkiseccat\",\"cdf\":\"application/x-cdf\",\"cer\":\"application/x-x509-ca-cert\",\"class\":\"application/octet-stream\",\"clp\":\"application/x-msclip\",\"cmx\":\"image/x-cmx\",\"cod\":\"image/cis-cod\",\"cpio\":\"application/x-cpio\",\"crd\":\"application/x-mscardfile\",\"crl\":\"application/pkix-crl\",\"crt\":\"application/x-x509-ca-cert\",\"csh\":\"application/x-csh\",\"css\":\"text/css\",\"dcr\":\"application/x-director\",\"der\":\"application/x-x509-ca-cert\",\"dir\":\"application/x-director\",\"dll\":\"application/x-msdownload\",\"dms\":\"application/octet-stream\",\"doc\":\"application/msword\",\"dot\":\"application/msword\",\"dvi\":\"application/x-dvi\",\"dxr\":\"application/x-director\",\"eps\":\"application/postscript\",\"etx\":\"text/x-setext\",\"evy\":\"application/envoy\",\"exe\":\"application/octet-stream\",\"fif\":\"application/fractals\",\"flr\":\"x-world/x-vrml\",\"gif\":\"image/gif\",\"gtar\":\"application/x-gtar\",\"gz\":\"application/x-gzip\",\"h\":\"text/plain\",\"hdf\":\"application/x-hdf\",\"hlp\":\"application/winhlp\",\"hqx\":\"application/mac-binhex40\",\"hta\":\"application/hta\",\"htc\":\"text/x-component\",\"htm\":\"text/html\",\"html\":\"text/html\",\"htt\":\"text/webviewhtml\",\"ico\":\"image/x-icon\",\"ief\":\"image/ief\",\"iii\":\"application/x-iphone\",\"ins\":\"application/x-internet-signup\",\"isp\":\"application/x-internet-signup\",\"jfif\":\"image/pipeg\",\"jpe\":\"image/jpeg\",\"jpeg\":\"image/jpeg\",\"jpg\":\"image/jpeg\",\"png\":\"image/png\",\"js\":\"application/x-javascript\",\"json\":\"application/json\",\"latex\":\"application/x-latex\",\"lha\":\"application/octet-stream\",\"lsf\":\"video/x-la-asf\",\"lsx\":\"video/x-la-asf\",\"lzh\":\"application/octet-stream\",\"m13\":\"application/x-msmediaview\",\"m14\":\"application/x-msmediaview\",\"m3u\":\"audio/x-mpegurl\",\"man\":\"application/x-troff-man\",\"mdb\":\"application/x-msaccess\",\"me\":\"application/x-troff-me\",\"mht\":\"message/rfc822\",\"mhtml\":\"message/rfc822\",\"mid\":\"audio/mid\",\"mny\":\"application/x-msmoney\",\"mov\":\"video/quicktime\",\"movie\":\"video/x-sgi-movie\",\"mp2\":\"video/mpeg\",\"mp3\":\"audio/mpeg\",\"mpa\":\"video/mpeg\",\"mpe\":\"video/mpeg\",\"mpeg\":\"video/mpeg\",\"mpg\":\"video/mpeg\",\"mpp\":\"application/vnd.ms-project\",\"mpv2\":\"video/mpeg\",\"ms\":\"application/x-troff-ms\",\"mvb\":\"application/x-msmediaview\",\"nws\":\"message/rfc822\",\"oda\":\"application/oda\",\"p10\":\"application/pkcs10\",\"p12\":\"application/x-pkcs12\",\"p7b\":\"application/x-pkcs7-certificates\",\"p7c\":\"application/x-pkcs7-mime\",\"p7m\":\"application/x-pkcs7-mime\",\"p7r\":\"application/x-pkcs7-certreqresp\",\"p7s\":\"application/x-pkcs7-signature\",\"pbm\":\"image/x-portable-bitmap\",\"pdf\":\"application/pdf\",\"pfx\":\"application/x-pkcs12\",\"pgm\":\"image/x-portable-graymap\",\"pko\":\"application/ynd.ms-pkipko\",\"pma\":\"application/x-perfmon\",\"pmc\":\"application/x-perfmon\",\"pml\":\"application/x-perfmon\",\"pmr\":\"application/x-perfmon\",\"pmw\":\"application/x-perfmon\",\"pnm\":\"image/x-portable-anymap\",\"pot,\":\"application/vnd.ms-powerpoint\",\"ppm\":\"image/x-portable-pixmap\",\"pps\":\"application/vnd.ms-powerpoint\",\"ppt\":\"application/vnd.ms-powerpoint\",\"prf\":\"application/pics-rules\",\"ps\":\"application/postscript\",\"pub\":\"application/x-mspublisher\",\"qt\":\"video/quicktime\",\"ra\":\"audio/x-pn-realaudio\",\"ram\":\"audio/x-pn-realaudio\",\"ras\":\"image/x-cmu-raster\",\"rgb\":\"image/x-rgb\",\"rmi\":\"audio/mid\",\"roff\":\"application/x-troff\",\"rtf\":\"application/rtf\",\"rtx\":\"text/richtext\",\"scd\":\"application/x-msschedule\",\"sct\":\"text/scriptlet\",\"setpay\":\"application/set-payment-initiation\",\"setreg\":\"application/set-registration-initiation\",\"sh\":\"application/x-sh\",\"shar\":\"application/x-shar\",\"sit\":\"application/x-stuffit\",\"snd\":\"audio/basic\",\"spc\":\"application/x-pkcs7-certificates\",\"spl\":\"application/futuresplash\",\"src\":\"application/x-wais-source\",\"sst\":\"application/vnd.ms-pkicertstore\",\"stl\":\"application/vnd.ms-pkistl\",\"stm\":\"text/html\",\"sv4cpio\":\"application/x-sv4cpio\",\"sv4crc\":\"application/x-sv4crc\",\"svg\":\"image/svg+xml\",\"swf\":\"application/x-shockwave-flash\",\"t\":\"application/x-troff\",\"tar\":\"application/x-tar\",\"tcl\":\"application/x-tcl\",\"tex\":\"application/x-tex\",\"texi\":\"application/x-texinfo\",\"texinfo\":\"application/x-texinfo\",\"tgz\":\"application/x-compressed\",\"tif\":\"image/tiff\",\"tiff\":\"image/tiff\",\"tr\":\"application/x-troff\",\"trm\":\"application/x-msterminal\",\"tsv\":\"text/tab-separated-values\",\"txt\":\"text/plain\",\"uls\":\"text/iuls\",\"ustar\":\"application/x-ustar\",\"vcf\":\"text/x-vcard\",\"vrml\":\"x-world/x-vrml\",\"wav\":\"audio/x-wav\",\"wcm\":\"application/vnd.ms-works\",\"wdb\":\"application/vnd.ms-works\",\"wks\":\"application/vnd.ms-works\",\"wmf\":\"application/x-msmetafile\",\"wps\":\"application/vnd.ms-works\",\"wri\":\"application/x-mswrite\",\"wrl\":\"x-world/x-vrml\",\"wrz\":\"x-world/x-vrml\",\"xaf\":\"x-world/x-vrml\",\"xbm\":\"image/x-xbitmap\",\"xla\":\"application/vnd.ms-excel\",\"xlc\":\"application/vnd.ms-excel\",\"xlm\":\"application/vnd.ms-excel\",\"xls\":\"application/vnd.ms-excel\",\"xlt\":\"application/vnd.ms-excel\",\"xlw\":\"application/vnd.ms-excel\",\"xof\":\"x-world/x-vrml\",\"xpm\":\"image/x-xpixmap\",\"xwd\":\"image/x-xwindowdump\",\"z\":\"application/x-compress\",\"zip\":\"application/zip\"}";
19-
private static JsonObject MIME_TYPE_JSON = new Gson().fromJson(MIME_TYPE_JSONSTR, JsonObject.class);
19+
private static String MIME_TYPE_JSONSTR;
20+
21+
private static JsonObject MIME_TYPE_JSON;
22+
23+
static {
24+
try {
25+
MIME_TYPE_JSONSTR = FileUtil.readFileContent(ClassLoader.getSystemResourceAsStream("mime-type.json"));
26+
MIME_TYPE_JSON = new Gson().fromJson(MIME_TYPE_JSONSTR, JsonObject.class);
27+
} catch (IOException e) {
28+
e.printStackTrace();
29+
}
30+
}
2031

2132
public static String getMimeType(File file) throws UfileFileException {
2233
if (file == null)

0 commit comments

Comments
 (0)