Explorar el Código

Merge branch 'upload-local' into 'DEV'

Upload local



See merge request !385

梅杰 hace 8 años
padre
commit
f2538c6ac1

+ 52 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/util/http/RequestUtils.java

@@ -4,6 +4,12 @@ import cn.iselab.mooctest.site.web.constants.AttrConsts;
 
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -64,4 +70,50 @@ public class RequestUtils {
         }
         return request.getParameterMap().get(name).length == 1 ? request.getParameterMap().get(name)[0] : "";
     }
+
+    public static String getIP()throws IOException{
+        //String ip=System.getenv("HOST_IP");
+        System.out.println(System.getenv("M2_HOME"));
+        System.out.println(System.getenv("HOST_IP"));
+        Map<String,String> map=System.getenv();
+        String ip=map.get("HOST_IP");
+        System.out.println(ip);
+        if(ip==null){
+            ip = getLocalHostLANAddress().getHostAddress();
+        }
+        System.out.println(ip);
+        return "http://"+ip;
+    }
+
+    public static InetAddress getLocalHostLANAddress() throws SocketException ,UnknownHostException{
+        try {
+            InetAddress candidateAddress = null;
+            // 遍历所有的网络接口
+            for (Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); ) {
+                NetworkInterface iface = (NetworkInterface) ifaces.nextElement();
+                // 在所有的接口下再遍历IP
+                for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); ) {
+                    InetAddress inetAddr = (InetAddress) inetAddrs.nextElement();
+                    if (!inetAddr.isLoopbackAddress()) {// 排除loopback类型地址
+                        if (inetAddr.isSiteLocalAddress()) {
+                            // 如果是site-local地址,就是它了
+                            return inetAddr;
+                        } else if (candidateAddress == null) {
+                            // site-local类型的地址未被发现,先记录候选地址
+                            candidateAddress = inetAddr;
+                        }
+                    }
+                }
+            }
+            if (candidateAddress != null) {
+                return candidateAddress;
+            }
+            // 如果没有发现 non-loopback地址.只能用最次选的方案
+            InetAddress jdkSuppliedAddress = InetAddress.getLocalHost();
+            return jdkSuppliedAddress;
+        } catch (SocketException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
 }

+ 3 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/OSSController.java

@@ -3,6 +3,7 @@ package cn.iselab.mooctest.site.web.ctrl;
 import cn.iselab.mooctest.site.common.constant.UrlConstants;
 import cn.iselab.mooctest.site.common.web.SuccessResult;
 import cn.iselab.mooctest.site.rpc.oauth2.constant.OSSPath;
+import cn.iselab.mooctest.site.util.http.RequestUtils;
 import cn.iselab.mooctest.site.web.exception.HttpBadRequestException;
 import cn.iselab.mooctest.site.web.logic.OSSLogic;
 import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;
@@ -21,6 +22,7 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URL;
+import java.net.UnknownHostException;
 import java.util.Map;
 
 /**
@@ -78,7 +80,7 @@ public class OSSController extends BaseController {
     public Map<String,Object> uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("path") String path, HttpServletRequest request) throws IOException{
         String result=ossLogic.saveFile(file,path);
         SuccessResult successResult = new SuccessResult();
-        successResult.put("path", "http://"+request.getRemoteAddr()+result);
+        successResult.put("path", request.getHeader("Font-Address")+result);
         return successResult;
     }
 }

+ 2 - 2
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/OSSLogicImpl.java

@@ -57,7 +57,7 @@ public class OSSLogicImpl implements OSSLogic {
     private String bucketName;
 
     private long maxUploadSizeInMb = 100 * 1024 * 1204; //100MB
-    private String UPLOADED_PATH="/FileSystem/download/";
+    private String UPLOADED_PATH="/download/";
 
     @Override
     public String getAppPresignUrl(String appName) {
@@ -193,7 +193,7 @@ public class OSSLogicImpl implements OSSLogic {
             throw new HttpBadRequestException("file size is over limit");
         }
         String fileName=UPLOADED_PATH+path;
-        File saveFile = new File(fileName);
+        File saveFile = new File("/FileSystem"+fileName);
         //判断文件父目录是否存在
         System.out.println(saveFile.getParentFile());
         if (!saveFile.getParentFile().exists()) {