问题1:
修改ueditor.config.js里面的serverUrl为自己的的请求URL后,图片上传不好用提示后台配置不成功。
问题原因:
config.json没有加载到。
解决方法:
修改 ConfigManager.java 下的 originalPath 改成自己的config.json的路径,可以看下initEnv()方法和getConfigPath()这个方法,originalPath这个路径应该是和config.json这个文件路径下的文件,因为initEnv()会去originalPath的父目录然后在加config.json。
问题2:
springMVC设置上传配置后图片上传提示未找到上传数据
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="52428800"/>
</bean>
问题原因:
springMVC对接收的request已经解析过一遍,里面的文件不能在次取到。
解决方法:
自己新增springMVC处理上传的方法,对图片、试片和附件进行处理。可以在ActionEnter下switch的时候处理,也可以在Uploader时进行处理。
public class SpringMVCUploader
{
public static final State save(HttpServletRequest request, Map<String, Object> conf)
{
if (request instanceof MultipartHttpServletRequest)
{
try
{
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
if(multipartResolver.isMultipart(request))
{
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
Iterator<String> iter = multiRequest.getFileNames();
MultipartFile file = null;
while(iter.hasNext())
{
file = multiRequest.getFile(iter.next());
if(file != null)
{
break;
}
file = null;
}
if (file == null)
{
return new BaseState(false, AppInfo.NOTFOUND_UPLOAD_DATA);
}
String savePath = (String) conf.get("savePath");
String originFileName = file.getOriginalFilename();
String suffix = FileType.getSuffixByFilename(originFileName);
originFileName = originFileName.substring(0, originFileName.length() - suffix.length());
savePath = savePath + suffix;
long maxSize = ((Long) conf.get("maxSize")).longValue();
if (!validType(suffix, (String[]) conf.get("allowFiles")))
{
return new BaseState(false, AppInfo.NOT_ALLOW_FILE_TYPE);
}
savePath = PathFormat.parse(savePath, originFileName);
String physicalPath = (String) conf.get("rootPath") + savePath;
InputStream is = file.getInputStream();
State storageState = StorageManager.saveFileByInputStream(is, physicalPath, maxSize);
is.close();
if (storageState.isSuccess()) {
storageState.putInfo("url", PathFormat.format(savePath));
storageState.putInfo("type", suffix);
storageState.putInfo("original", originFileName + suffix);
}
return storageState;
}
}
catch (Exception e)
{
return new BaseState(false, AppInfo.PARSE_REQUEST_ERROR);
}
}
return new BaseState(false, AppInfo.IO_ERROR);
}
private static boolean validType(String type, String[] allowTypes)
{
List<String> list = Arrays.asList(allowTypes);
return list.contains(type);
}
}