Skip to content

Commit

Permalink
* 修复bug:使用自定义域名时,远端文件名keyname未urlEncode,导致签名值不正确
Browse files Browse the repository at this point in the history
  • Loading branch information
Joshua Yin committed Aug 4, 2020
1 parent 8f0d8aa commit 5ed3039
Show file tree
Hide file tree
Showing 17 changed files with 360 additions and 54 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<dependency>
<groupId>cn.ucloud.ufile</groupId>
<artifactId>ufile-client-java</artifactId>
<version>2.5.1</version>
<version>2.5.2</version>
</dependency>
```

Expand All @@ -36,7 +36,7 @@
/*
* your other dependencies
*/
implementation 'cn.ucloud.ufile:ufile-client-java:2.5.1'
implementation 'cn.ucloud.ufile:ufile-client-java:2.5.2'
}
```

Expand Down
33 changes: 31 additions & 2 deletions ufile-sample-java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,52 @@

<build>
<plugins>
<!-- 编译插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!--这里要替换成jar包main方法所在类 -->
<mainClass>cn.ucloud.ufile.sample.object.TotalTest</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- 指定在打包节点执行jar包合并操作 -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>cn.ucloud.ufile</groupId>
<artifactId>ufile-client-java</artifactId>
<version>2.5.1</version>
<version>2.5.2</version>
</dependency>
</dependencies>

Expand Down
2 changes: 1 addition & 1 deletion ufile/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<groupId>cn.ucloud.ufile</groupId>
<artifactId>ufile</artifactId>
<packaging>pom</packaging>
<version>2.5.1</version>
<version>2.5.2</version>

<modules>
<module>ufile-core</module>
Expand Down
Binary file modified ufile/ufile-client-java/apidocs.zip
Binary file not shown.
6 changes: 3 additions & 3 deletions ufile/ufile-client-java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
<parent>
<artifactId>ufile</artifactId>
<groupId>cn.ucloud.ufile</groupId>
<version>2.5.1</version>
<version>2.5.2</version>
</parent>

<artifactId>ufile-client-java</artifactId>
<version>2.5.1</version>
<version>2.5.2</version>

<dependencies>
<dependency>
Expand All @@ -26,7 +26,7 @@
<dependency>
<groupId>cn.ucloud.ufile</groupId>
<artifactId>ufile-core</artifactId>
<version>2.5.1</version>
<version>2.5.2</version>
</dependency>
</dependencies>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,11 @@
import cn.ucloud.ufile.exception.UfileServerException;
import cn.ucloud.ufile.http.HttpClient;
import cn.ucloud.ufile.http.request.PutJsonRequestBuilder;
import cn.ucloud.ufile.util.FileUtil;
import cn.ucloud.ufile.util.HttpMethod;
import cn.ucloud.ufile.util.MetadataDirective;
import cn.ucloud.ufile.util.Parameter;
import cn.ucloud.ufile.util.*;
import com.google.gson.JsonElement;
import okhttp3.Response;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.*;

/**
Expand Down Expand Up @@ -169,9 +165,8 @@ protected void prepareData() throws UfileClientException {

try {
xUfileCopySource = new StringBuilder("/")
.append(URLEncoder.encode(srcBucketName, "UTF-8").replace("+", "%20"))
.append("/")
.append(URLEncoder.encode(srcKeyName, "UTF-8").replace("+", "%20"))
.append(Encoder.urlEncode(srcBucketName, "UTF-8")).append("/")
.append(Encoder.urlEncode(srcKeyName, "UTF-8"))
.toString();
} catch (UnsupportedEncodingException e) {
throw new UfileClientException("Occur error during URLEncode srcBucketName and srcKeyName", e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import cn.ucloud.ufile.exception.UfileRequiredParamNotFoundException;
import cn.ucloud.ufile.auth.ObjectAuthorizer;
import cn.ucloud.ufile.http.request.GetRequestBuilder;
import cn.ucloud.ufile.util.Encoder;
import cn.ucloud.ufile.util.HttpMethod;
import cn.ucloud.ufile.util.Parameter;
import com.google.gson.JsonElement;
Expand Down Expand Up @@ -146,7 +147,7 @@ public String createUrl() throws UfileClientException {

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

try {
bucketName = URLEncoder.encode(bucketName, "UTF-8").replace("+", "%20");
String region = URLEncoder.encode(objectConfig.getRegion(), "UTF-8")
.replace("+", "%20");
String proxySuffix = URLEncoder.encode(objectConfig.getProxySuffix(), "UTF-8")
.replace("+", "%20");
keyName = URLEncoder.encode(keyName, "UTF-8").replace("+", "%20");
bucketName = Encoder.urlEncode(bucketName, "UTF-8");
String region = Encoder.urlEncode(objectConfig.getRegion(), "UTF-8");
String proxySuffix = Encoder.urlEncode(objectConfig.getProxySuffix(), "UTF-8");
keyName = Encoder.urlEncode(keyName, "UTF-8");
return new StringBuilder(objectConfig.getProtocol().getValue())
.append(String.format("%s.%s.%s/%s", bucketName, region, proxySuffix, keyName)).toString();
} catch (UnsupportedEncodingException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import cn.ucloud.ufile.exception.UfileParamException;
import cn.ucloud.ufile.exception.UfileRequiredParamNotFoundException;
import cn.ucloud.ufile.http.request.GetRequestBuilder;
import cn.ucloud.ufile.util.Encoder;
import cn.ucloud.ufile.util.Parameter;

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

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

try {
bucketName = URLEncoder.encode(bucketName, "UTF-8").replace("+", "%20");
String region = URLEncoder.encode(objectConfig.getRegion(), "UTF-8")
.replace("+", "%20");
String proxySuffix = URLEncoder.encode(objectConfig.getProxySuffix(), "UTF-8")
.replace("+", "%20");
keyName = URLEncoder.encode(keyName, "UTF-8").replace("+", "%20");
bucketName = Encoder.urlEncode(bucketName, "UTF-8");
String region = Encoder.urlEncode(objectConfig.getRegion(), "UTF-8");
String proxySuffix = Encoder.urlEncode(objectConfig.getProxySuffix(), "UTF-8");
keyName = Encoder.urlEncode(keyName, "UTF-8");
return new StringBuilder(objectConfig.getProtocol().getValue())
.append(String.format("%s.%s.%s/%s", bucketName, region, proxySuffix, keyName)).toString();
} catch (UnsupportedEncodingException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.google.gson.JsonObject;

import java.io.File;
import java.io.IOException;

/**
* @description:
Expand All @@ -15,8 +16,18 @@
*/
public class MimeTypeUtil {
private static String TAG = "MimeTypeUtil";
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\"}";
private static JsonObject MIME_TYPE_JSON = new Gson().fromJson(MIME_TYPE_JSONSTR, JsonObject.class);
private static String MIME_TYPE_JSONSTR;

private static JsonObject MIME_TYPE_JSON;

static {
try {
MIME_TYPE_JSONSTR = FileUtil.readFileContent(ClassLoader.getSystemResourceAsStream("mime-type.json"));
MIME_TYPE_JSON = new Gson().fromJson(MIME_TYPE_JSONSTR, JsonObject.class);
} catch (IOException e) {
e.printStackTrace();
}
}

public static String getMimeType(File file) throws UfileFileException {
if (file == null)
Expand Down
Loading

0 comments on commit 5ed3039

Please sign in to comment.