Commit fb3a006f by 丁伟

1、解决上传到服务器的图片和文件无法直接读取的问题。

parent f4bc09a7
package org.ccpit.ueditor.upload; package org.ccpit.ueditor.upload;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItemIterator; import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream; import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.FileUploadException;
...@@ -19,6 +11,15 @@ import org.ccpit.ueditor.define.BaseState; ...@@ -19,6 +11,15 @@ import org.ccpit.ueditor.define.BaseState;
import org.ccpit.ueditor.define.FileType; import org.ccpit.ueditor.define.FileType;
import org.ccpit.ueditor.define.State; import org.ccpit.ueditor.define.State;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.util.*;
public class BinaryUploader { public class BinaryUploader {
public static final State save(HttpServletRequest request, public static final State save(HttpServletRequest request,
...@@ -73,8 +74,14 @@ public class BinaryUploader { ...@@ -73,8 +74,14 @@ public class BinaryUploader {
String physicalPath = serverSavePathPrefix + savePath; String physicalPath = serverSavePathPrefix + savePath;
InputStream is = fileStream.openStream(); InputStream is = fileStream.openStream();
State storageState = StorageManager.saveFileByInputStream(is,
physicalPath, maxSize); State storageState = StorageManager.saveFileByInputStream(is, physicalPath, maxSize);
Set<PosixFilePermission> permissions = new HashSet<>();
permissions.add(PosixFilePermission.OWNER_READ);
permissions.add(PosixFilePermission.OWNER_WRITE);
permissions.add(PosixFilePermission.GROUP_READ);
permissions.add(PosixFilePermission.OTHERS_READ);
Files.setPosixFilePermissions(Paths.get(physicalPath), permissions);
is.close(); is.close();
if (storageState.isSuccess()) { if (storageState.isSuccess()) {
......
...@@ -8,6 +8,11 @@ import java.io.File; ...@@ -8,6 +8,11 @@ import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.util.HashSet;
import java.util.Set;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.ccpit.ueditor.define.AppInfo; import org.ccpit.ueditor.define.AppInfo;
...@@ -124,6 +129,16 @@ public class StorageManager { ...@@ -124,6 +129,16 @@ public class StorageManager {
State state = null; State state = null;
File targetFile = new File(path); File targetFile = new File(path);
Set<PosixFilePermission> permissions = new HashSet<>();
permissions.add(PosixFilePermission.OWNER_READ);
permissions.add(PosixFilePermission.OWNER_WRITE);
permissions.add(PosixFilePermission.GROUP_READ);
permissions.add(PosixFilePermission.OTHERS_READ);
try {
Files.setPosixFilePermissions(Paths.get(path), permissions);
} catch (IOException e) {
e.printStackTrace();
}
if (targetFile.canWrite()) { if (targetFile.canWrite()) {
return new BaseState(false, AppInfo.PERMISSION_DENIED); return new BaseState(false, AppInfo.PERMISSION_DENIED);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment