关于图片上传后的路径问题!急,在线等待! 或者做一个setXXX(),只要在用时随时为上传路径付值。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 也可以设置在一个properties文件中,每次用ResourceBundle读一下就可以了。这样的好处是你的程序不用改动。 我可以由jvm所调用的任何一个jar文件,得到它的path。java.lang.Class里面有方法。想获得用户路径用 System.getProperty("user.dir"); package mshtang.sql;/** * <p>Title: SQLWithAttacInsertAction</p> * <p>Description: 当有附件的上载,SQL语句的构造适用本类。 * 前提:1.数据库字段名与附件上载域名相同;2.数据库中不实际保存附件, * 而只保存附件的存放路径;3.SmartUpload先初始化,即必须进行下列步骤: * SmartUpload upload = new SmartUpload();upload.initalize(pageContext); * upload.upload();这些步骤由类的使用者完成;4.在想得到SQL语句之前, * 必须先设置文件的上载路径,即setDirectory("\\a\\b\\");可设置一级或 * 多极目录。该方法暂时用于windows平台</p> * <p>Copyright: 厦门一方软件公司版权所有 (c) 2002</p> * <p>Company: 厦门一方软件公司</p> * @author 唐明胜 * @version 1.0 */import mshtang.StringAction;import mshtang.sql.SQLNormalAction;import java.util.Enumeration;import com.jspsmart.upload.*;import javax.servlet.jsp.PageContext;import javax.servlet.ServletContext;import java.io.File;import java.sql.*;import java.util.ArrayList;public class SQLAttachInsert{ private String tempInsert; private StringAction S;//本类中将使用到的字符串操作对象; private String dir;//有外部使用者决定的附件保存路径; private String[] attachPath; private String[] attachField; private String insert_Field; private String insert_Value; public SQLAttachInsert() { S = new StringAction(); } public void setDirectory(String directory) { dir = directory; } /*上载附件,其实其与SQL语句构造无关,但为了保证数据库中 的保存值与实际存放路径一致,则必须有该前期工作*/ protected void uploadAttach(SmartUpload upload, PageContext pageContext) { ServletContext servletContext = pageContext.getServletContext(); String realPath = servletContext.getRealPath("/"); String relativePath = dir; java.io.File javaFile = new java.io.File(realPath, relativePath); try { if(!javaFile.exists()) { javaFile.mkdirs(); } } catch(Exception ex) { ex.printStackTrace(); } try { upload.save(relativePath); } catch(Exception e) { e.printStackTrace(); } } /*设置附件信息:包括附件的保存字段以及给字段的值,每个字段可能多值, 其由spliter分开。 */ private void setAttachmentInfo(SmartUpload upload, String newAttachFieldList, String spliter)//set the fieldname and the save path of the attachment { if(newAttachFieldList.equals("")) { attachField = null; attachPath = null; } else { String[] attachFieldArray = S.stringSplit(newAttachFieldList, spliter); String[] attachPathArray = new String[attachFieldArray.length]; com.jspsmart.upload.Files files = upload.getFiles(); Enumeration fileEnum = files.getEnumeration(); String fileDirectory; String fileName; String fieldName; while(fileEnum.hasMoreElements()) { fileDirectory = dir; com.jspsmart.upload.File file = (com.jspsmart.upload.File)fileEnum.nextElement(); fileName = file.getFileName(); fieldName = file.getFieldName(); for(int i = 0; i < attachFieldArray.length; i++) { if(fieldName.equals(attachFieldArray[i])) { if(fileName != null && !fileName.equals("")) { fileDirectory += fileName; if(attachPathArray[i] == null) { attachPathArray[i] = ""; } if(!S.isContains(attachPathArray[i], fileDirectory)) { attachPathArray[i] += fileDirectory + spliter; } } } } } attachField = attachFieldArray;//设置保存附件路径的数据库字段列表。 attachPath = attachPathArray;//设置上述字段的值列表。 } } /*设置除附件外的其他域值相关信息:同样包括字段及其值*/ private void setNormalFieldInfo(SmartUpload upload, String tableName, String ignoreFieldList, String spliter)//spliter的含义为如果某个域提交多值,则多值间采用spliter分隔。 { if(tableName == null || tableName.equals("")) { return; } Enumeration nameEnum = upload.getRequest().getParameterNames(); String insertField = "insert into " + tableName + "("; tempInsert = insertField; String insertValue = "values ("; String temp_Field = insertField; String temp_Value = insertValue; int count = 0; while(nameEnum.hasMoreElements()) { String name = nameEnum.nextElement().toString().trim(); if(!ignoreFieldList.equals("") && S.isContains(ignoreFieldList, name)) { continue; } String valueArray[] = upload.getRequest().getParameterValues(name); String value = S.getArrayValue(valueArray, spliter, false); if(value != null && !value.equals("")) { insertField += name + ", "; insertValue += "'" + value + "', "; } System.out.println("insertField=" + insertField); } insert_Field = insertField; insert_Value = insertValue; } /*将附件域与一般域构造的SQL组合起来*/ private String constructInsertSQL() { String[] attachPathArray = attachPath; String[] attachFieldArray = attachField; if(attachPathArray != null) { for(int i = 0; i < attachFieldArray.length; i++) { if(attachPathArray[i] != null && !attachPathArray[i].equals(dir)) { insert_Field += attachFieldArray[i] + ", "; insert_Value += "'" + attachPathArray[i] + "', "; } } } if(!insert_Field.equals(tempInsert)) { insert_Field = insert_Field.trim(); insert_Field = insert_Field.substring(0, insert_Field.length() - 1) + ") "; insert_Value = insert_Value.trim(); insert_Value = insert_Value.substring(0, insert_Value.length() - 1) + ")"; insert_Field += insert_Value; } else { insert_Field = ""; } return insert_Field; } /**功能:最后由外部调用,返回完整的SQL * * @param upload * @param tableName * @param pageContext * @param attachFieldList * @param ignoreFieldList * @param spliter * @return */ public String getInsertSQL(SmartUpload upload, String tableName, PageContext pageContext, String attachFieldList, String ignoreFieldList, String spliter) { uploadAttach(upload, pageContext); setAttachmentInfo(upload, attachFieldList, spliter); setNormalFieldInfo(upload, tableName, ignoreFieldList, spliter); return constructInsertSQL(); } /**功能:方法重载,多值间以分号分隔。 * * @param upload * @param tableName * @param pageContext * @param attachFieldList * @param ignoreFieldList * @return */ public String getInsertSQL(SmartUpload upload, String tableName, PageContext pageContext, String attachFieldList, String ignoreFieldList) { return getInsertSQL(upload, tableName, pageContext, attachFieldList, ignoreFieldList, ";"); } /**功能:方法重载。没有需要忽略的域。 * * @param upload * @param tableName * @param pageContext * @param attachFieldList * @return */ public String getInsertSQL(SmartUpload upload, String tableName, PageContext pageContext, String attachFieldList) { return getInsertSQL(upload, tableName, pageContext, attachFieldList, "", ";"); } public String getinsertSQL(SmartUpload upload, PageContext pageContext, String tableName, String ignoreFieldList) { return getInsertSQL(upload, tableName, pageContext, "", ignoreFieldList, ";"); } /**功能:方法重载。没有附件上载域以及需要忽略的域。功能同SQLNormalAction中的getInsertSQL(HttpServletRequest request, String tableName). * * @param upload * @param tableName * @param pageContext * @return */ public String getInsertSQL(SmartUpload upload, String tableName, PageContext pageContext) { r 上面用到的东西需要smartUpload 关于JAVA中 XSD 验证 XML 错误信息设置为中文的方法 重赏之下,必有勇夫! jspsmartupload的一个问题 一个URL参数,显示中文乱码问题,请高手指教 有关开发和运行环境的问题 IntelliJ 3.0注册号.和用户名? SQL查询问题 谁有IntelliJ IDEA 2.6的sn or crack? Java 的函数参考有没有chm格式的??? Shap类中的第一行有什么作用. Circle类new对象,先调用父类构造器,还是先执行父类的第一行 哪里能载到vj++? ■■■■■■■■动态联盟是什么意思?谁懂~给点信息~分不是问题~◆◆◆◆◆◆◆◆◆◆
* <p>Title: SQLWithAttacInsertAction</p>
* <p>Description: 当有附件的上载,SQL语句的构造适用本类。
* 前提:1.数据库字段名与附件上载域名相同;2.数据库中不实际保存附件,
* 而只保存附件的存放路径;3.SmartUpload先初始化,即必须进行下列步骤:
* SmartUpload upload = new SmartUpload();upload.initalize(pageContext);
* upload.upload();这些步骤由类的使用者完成;4.在想得到SQL语句之前,
* 必须先设置文件的上载路径,即setDirectory("\\a\\b\\");可设置一级或
* 多极目录。该方法暂时用于windows平台</p>
* <p>Copyright: 厦门一方软件公司版权所有 (c) 2002</p>
* <p>Company: 厦门一方软件公司</p>
* @author 唐明胜
* @version 1.0
*/
import mshtang.StringAction;
import mshtang.sql.SQLNormalAction;
import java.util.Enumeration;
import com.jspsmart.upload.*;
import javax.servlet.jsp.PageContext;
import javax.servlet.ServletContext;
import java.io.File;
import java.sql.*;
import java.util.ArrayList;
public class SQLAttachInsert
{ private String tempInsert; private StringAction S;//本类中将使用到的字符串操作对象;
private String dir;//有外部使用者决定的附件保存路径; private String[] attachPath;
private String[] attachField; private String insert_Field;
private String insert_Value; public SQLAttachInsert()
{
S = new StringAction();
} public void setDirectory(String directory)
{
dir = directory;
} /*上载附件,其实其与SQL语句构造无关,但为了保证数据库中
的保存值与实际存放路径一致,则必须有该前期工作*/
protected void uploadAttach(SmartUpload upload, PageContext pageContext)
{
ServletContext servletContext = pageContext.getServletContext();
String realPath = servletContext.getRealPath("/");
String relativePath = dir;
java.io.File javaFile = new java.io.File(realPath, relativePath);
try
{
if(!javaFile.exists())
{
javaFile.mkdirs();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
try
{
upload.save(relativePath);
}
catch(Exception e)
{
e.printStackTrace();
}
} /*设置附件信息:包括附件的保存字段以及给字段的值,每个字段可能多值,
其由spliter分开。
*/
private void setAttachmentInfo(SmartUpload upload, String newAttachFieldList, String spliter)//set the fieldname and the save path of the attachment
{
if(newAttachFieldList.equals(""))
{
attachField = null;
attachPath = null;
}
else
{
String[] attachFieldArray = S.stringSplit(newAttachFieldList, spliter);
String[] attachPathArray = new String[attachFieldArray.length];
com.jspsmart.upload.Files files = upload.getFiles();
Enumeration fileEnum = files.getEnumeration();
String fileDirectory;
String fileName;
String fieldName;
while(fileEnum.hasMoreElements())
{
fileDirectory = dir;
com.jspsmart.upload.File file = (com.jspsmart.upload.File)fileEnum.nextElement();
fileName = file.getFileName();
fieldName = file.getFieldName();
for(int i = 0; i < attachFieldArray.length; i++)
{
if(fieldName.equals(attachFieldArray[i]))
{
if(fileName != null && !fileName.equals(""))
{
fileDirectory += fileName;
if(attachPathArray[i] == null)
{
attachPathArray[i] = "";
}
if(!S.isContains(attachPathArray[i], fileDirectory))
{
attachPathArray[i] += fileDirectory + spliter;
}
}
}
}
}
attachField = attachFieldArray;//设置保存附件路径的数据库字段列表。
attachPath = attachPathArray;//设置上述字段的值列表。
}
}
/*设置除附件外的其他域值相关信息:同样包括字段及其值*/
private void setNormalFieldInfo(SmartUpload upload, String tableName, String ignoreFieldList, String spliter)//spliter的含义为如果某个域提交多值,则多值间采用spliter分隔。
{
if(tableName == null || tableName.equals(""))
{
return;
}
Enumeration nameEnum = upload.getRequest().getParameterNames();
String insertField = "insert into " + tableName + "(";
tempInsert = insertField;
String insertValue = "values (";
String temp_Field = insertField;
String temp_Value = insertValue;
int count = 0;
while(nameEnum.hasMoreElements())
{
String name = nameEnum.nextElement().toString().trim();
if(!ignoreFieldList.equals("") && S.isContains(ignoreFieldList, name))
{
continue;
}
String valueArray[] = upload.getRequest().getParameterValues(name);
String value = S.getArrayValue(valueArray, spliter, false);
if(value != null && !value.equals(""))
{
insertField += name + ", ";
insertValue += "'" + value + "', ";
}
System.out.println("insertField=" + insertField);
}
insert_Field = insertField;
insert_Value = insertValue;
}
/*将附件域与一般域构造的SQL组合起来*/
private String constructInsertSQL()
{
String[] attachPathArray = attachPath;
String[] attachFieldArray = attachField;
if(attachPathArray != null)
{
for(int i = 0; i < attachFieldArray.length; i++)
{
if(attachPathArray[i] != null && !attachPathArray[i].equals(dir))
{
insert_Field += attachFieldArray[i] + ", ";
insert_Value += "'" + attachPathArray[i] + "', ";
}
}
}
if(!insert_Field.equals(tempInsert))
{
insert_Field = insert_Field.trim();
insert_Field = insert_Field.substring(0, insert_Field.length() - 1) + ") ";
insert_Value = insert_Value.trim();
insert_Value = insert_Value.substring(0, insert_Value.length() - 1) + ")";
insert_Field += insert_Value;
}
else
{
insert_Field = "";
}
return insert_Field;
} /**功能:最后由外部调用,返回完整的SQL
*
* @param upload
* @param tableName
* @param pageContext
* @param attachFieldList
* @param ignoreFieldList
* @param spliter
* @return
*/
public String getInsertSQL(SmartUpload upload, String tableName, PageContext pageContext, String attachFieldList, String ignoreFieldList, String spliter)
{
uploadAttach(upload, pageContext);
setAttachmentInfo(upload, attachFieldList, spliter);
setNormalFieldInfo(upload, tableName, ignoreFieldList, spliter);
return constructInsertSQL();
} /**功能:方法重载,多值间以分号分隔。
*
* @param upload
* @param tableName
* @param pageContext
* @param attachFieldList
* @param ignoreFieldList
* @return
*/
public String getInsertSQL(SmartUpload upload, String tableName, PageContext pageContext, String attachFieldList, String ignoreFieldList)
{
return getInsertSQL(upload, tableName, pageContext, attachFieldList, ignoreFieldList, ";");
} /**功能:方法重载。没有需要忽略的域。
*
* @param upload
* @param tableName
* @param pageContext
* @param attachFieldList
* @return
*/
public String getInsertSQL(SmartUpload upload, String tableName, PageContext pageContext, String attachFieldList)
{
return getInsertSQL(upload, tableName, pageContext, attachFieldList, "", ";");
} public String getinsertSQL(SmartUpload upload, PageContext pageContext, String tableName, String ignoreFieldList)
{
return getInsertSQL(upload, tableName, pageContext, "", ignoreFieldList, ";");
}
/**功能:方法重载。没有附件上载域以及需要忽略的域。功能同SQLNormalAction中的getInsertSQL(HttpServletRequest request, String tableName).
*
* @param upload
* @param tableName
* @param pageContext
* @return
*/
public String getInsertSQL(SmartUpload upload, String tableName, PageContext pageContext)
{
r