求助--Documents in BLOBs
在公司实习,突然让我JAVA编程,只懂JAVA基础,其他一概不知! 求助!!!如何将文件存在BLOB中,并设定一个OFFSET之类的,使最长缓存时间3小时,和缓存大小100MB之类的。
希望高手能帮帮我,可能说的不太清楚,大家凑乎理解把,因为我也不是很明白,到底要作什么?
----------------解决方案--------------------------------------------------------
首先,你做过上传没有?这里要你以文件上传的方式控制字节流的时间和大小。
建议你先找例子看,并理解你的需求。
----------------解决方案--------------------------------------------------------
你用import="com.jspsmart.upload.*"包下的方法
----------------解决方案--------------------------------------------------------
多谢斑竹,,有没有例子帮我推荐一下,,或者资料,,,我是毫无头绪!!
----------------解决方案--------------------------------------------------------
应该和这个文件有联系的,能帮忙解释一下么?
import ff.il.internal.datasource.*;
import ff.il.internal.doctype.DocumentOperationManager;
import ff.il.internal.doctype.DocumentType;
import ff.il.internal.utils.RMIInputStreamImpl;
import ff.pl.apps.ffapp.utils.mapper.MimeTypeMapper;
import ff.tools.extern.DatasourceFactoryClient;
import ff.util.IdCreator;
import java.io.File;
import java.io.FileInputStream;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Properties;
public class TestArchive extends DatasourceFactoryClient
{
private Datasource ds;
private DocumentOperationManager fdom;
public TestArchive(final Properties props)
{
super(props);
}
/**
* {@inheritDoc}
*/
public void run() throws Exception
{
final String file = "D:\\testdata\\Winter.jpg";
final FileInputStream in = new FileInputStream(file);
in.available();
final String filename = new File(file).getName();
final String mimetype = MimeTypeMapper.getMimeTypeByFileName(filename);
final String language = uc.getLanguage();
int count = ds.count(DatasourceUtils.EMPTY_SELECTION);
int documents = 1;
Record record = new Record ();
final Collection<Selection> what = new ArrayList<Selection>(1);
for (int i = count; i < (count + documents); i++)
{
record.clear();
what.clear();
record.put("LFDNR", i);
record.put("STRING_1", "String_1_" + i);
record.put("STRING_2", "String_2_" + i);
record.put("STRING_3", "String_3_" + i);
ds.insert(record);
what.add(new Selection("LFDNR", BigInteger.valueOf(i)));
final CRecord cr = (CRecord) ds.select(DatasourceUtils.EMPTY_ATTRIBUTES, what, DatasourceUtils.EMPTY_ORDER).iterator().next();
fdom.addDocument(new RMIInputStreamImpl(new FileInputStream(file)), mimetype,
filename, cr, null, null, language, null, null);
}
}
/**
* {@inheritDoc}
*/
protected void initObjects() throws Exception
{
super.initObjects();
ds = dsf.getDatasource(uc, new IdCreator(cid, project_name, version_id, "DATA"));
final DocumentType fdt = dtf.getDocumentType(new IdCreator(cid, project_name, version_id), "DOCTYPE");
fdom = fdt.getDocumentOperationManager(uc, dsf);
}
public static void main(final String[] args)
{
try
{
final Properties props = new Properties();
props.setProperty(PROP_LOGPATH, "../log2");
props.setProperty(PROP_LOGFILENAME_PREFIX_FROM_CLASS, String.valueOf(true));
props.setProperty(PROP_LOGLEVEL, String.valueOf(8));
props.setProperty(PROP_RMI_PORT, String.valueOf(16100));
props.setProperty(PROP_CID, String.valueOf(10));
props.setProperty(PROP_CLIENT, DatasourceConstants.DEFAULT_CLIENT);
props.setProperty(PROP_LOGIN_USER, "root");
props.setProperty(PROP_LOGIN_PWD, "rootroot");
props.setProperty(PROP_PROJECT_NAME, "MASTER");
final TestArchive impl = new TestArchive(props);
impl.init(args);
int count;
try
{
count = Integer.parseInt(args[0]);
}
catch (final Exception ignored)
{
count = 1;
}
for (int i = 0; i < count; ++i)
{
impl.run();
}
System.exit(0);
}
catch (final Throwable ex)
{
ex.printStackTrace(System.err);
System.exit(1);
}
}
}
----------------解决方案--------------------------------------------------------
ff.il.internal 是什么包?应该是你们公司内部写好的JAR包吧
里边除了文件类的方法,很多方法都是你们内部定义的方法,你只能点开你们公司内部的JAR内的文件反编译一下再看了.
----------------解决方案--------------------------------------------------------
如何将Inputstream以BLOB形式存档,并控制字节流的时间和大小?
----------------解决方案--------------------------------------------------------
你看看这个类,BufferedInputStream。中的marklimit
还有FilterInputStream 中的 mark
参数:
readlimit - 在标记位置变得无效前可以读取字节的最大限制。
至于时间,更好控制,你可以获取开始时间,并计算,如果超过3小时,自动提示失败,并停止上传。
如果你上边的那段代码是你们公司的,我想你们公司应该有很多写好的方法可以调用的。做JAVA的公司一般不会让你写底层,建议你问下同事。
----------------解决方案--------------------------------------------------------