当前位置: 代码迷 >> Java相关 >> 求助--Documents in BLOBs
  详细解决方案

求助--Documents in BLOBs

热度:757   发布时间:2009-11-10 17:58:18.0
求助--Documents in BLOBs
在公司实习,突然让我JAVA编程,只懂JAVA基础,其他一概不知! 求助!!!
如何将文件存在BLOB中,并设定一个OFFSET之类的,使最长缓存时间3小时,和缓存大小100MB之类的。
希望高手能帮帮我,可能说的不太清楚,大家凑乎理解把,因为我也不是很明白,到底要作什么?
搜索更多相关的解决方案: BLOBs  Documents  

----------------解决方案--------------------------------------------------------
首先,你做过上传没有?这里要你以文件上传的方式控制字节流的时间和大小。
建议你先找例子看,并理解你的需求。

----------------解决方案--------------------------------------------------------
你用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的公司一般不会让你写底层,建议你问下同事。
----------------解决方案--------------------------------------------------------
  相关解决方案