import com.admin.common.ApplicationConstants;
import com.admin.utils.PreCondition;
import org.apache.commons.lang.math.RandomUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.Date;
/**
* Created by amoslong on 2017/12/28.
*/
public class UploadUtils {
private final static Logger LOG = LoggerFactory.getLogger(UploadUtils.class);
public final static String CDN_URL = "/data/cdnfiles/"; // 图片CDN加速地址
public final static String IMG_URL = "http://i.shihuowang.com";
public static String upload(MultipartFile file1) {
String original1 = file1.getOriginalFilename();
int index = original1.lastIndexOf(".");
String extend1 = original1.substring(index);
extend1=extend1.toLowerCase();
if(!extend1.equals(".mp4") && !extend1.equals(".avi") && !extend1.equals(".flv") && !extend1.equals(".rmvb") && !extend1.equals(".wmv") && !extend1.equals(".3gp") && !extend1.equals(".mkv")
&& !extend1.equals(".rm")&& !extend1.equals(".asf")&& !extend1.equals(".mpeg")
){
PreCondition.isTrue(false, "视频格式有误,可上传得格式:mp4,mpg,avi,mov,flv,mkv,f4v,rmvb,wmv,rm,asf,mpeg");
}
Long len = file1.getSize();
if((len/1024)>(1024*5)){
PreCondition.isTrue(false, "文件过大请剪裁后重新上传");
}
String path1 = StringTools.dateToString(new Date(), "yyyyMMDDHHmmss") + RandomUtils.nextInt(10000) + extend1;
String dateToday = DateFormatUtils.format(new Date(), "yyyyMMdd");
File directory = new File(ApplicationConstants.CDN_URL + "nopas/"+dateToday);
if (!directory.exists()) {
directory.mkdirs();
}
ProcessBuilder processBuilder = null;
processBuilder = new ProcessBuilder("chmod", "-R", "755", directory.toString() + "/");
if (!file1.isEmpty()) {
try {
File lightImgFile = new File(directory.getAbsolutePath() + "/" + path1);
file1.transferTo(lightImgFile);
processBuilder.start();
} catch (IOException e) {
LOG.error("找不到文件");
}
}
return ApplicationConstants.IMG_URL + "/nopas/" + dateToday + "/" + path1;
}
}