Uploading file in file system or inserting it in database?

Dear All,
I am developing an application which will upload the files and store the information about file in database.
I have a question that which is good practice?
Uploading file in hard disk of server or inserting the file in database as BLOB?
File size varies from 1 MB to 100 MB.
Please suggest me good idea.

malcolmmc wrote:
The advantage of using a BLOB is that you can then access the file data from anywhere you can access the database, whereas a file path may be different from another client machine, or the file may be inaccessible.Another advantage is data integrity. I've encountered scenarios where file refernces in a database became invalid because an overzealous sys-admin deleted the files as stale after they'd reached a set age.
Or someone decides to "restructure the file system" and the entire directory containing your files gets moved somewhere else (hopefully not to /dev/null).
If the files are stored on different machines from the database the risk of this happening increases exponentially, if those machines are maintained by another company/department from the DBAs it goes through the roof.

Similar Messages

  • How to upload files (.doc./.pdf) to the database?

    Hello,
    I know this question was raised several times before but the answers don't really make me happy.
    I have a table with a BLOB-column for the documents (different mime-types) and a varchar2(100)-column for the mime type.
    I edited the form in navigator an told the blob-field to store mime-information in the mime-type-field.
    Now, do i have to tell portal the mime-type or does it retrieve it itself?
    if i have to tell, how do i do so?
    How can i fill in the value for the mime-type-field with javascript, when the fieldname is something like abc.def.ghi?
    Javascript then will tell me that document.forms.fieldname is not an object.
    Wouldn't it be a good idea to write a howto on this subject (and other subjects too, of course)? I'll do the work if you share your knowledge with me.
    And, by the way, can you share your wisdom about retrieving the blobs from tha database for displaying and download, too?
    thank you very much,
    Ralf Schmitt

    Hi Ralf,
    see in the design time if you are
    1)Interested in only one type of content in the blob column then just mention that mime-type in the
    for eg.there will be text field "or type in fixed mime type" where you can mention the default type which you are interested in uploading.
    2)If you intent to upload files of diffrent type of mime-types then you will have to associate a column for storing the mime types for that file and for this there will be a text field.
    for eg. you will have options for "Select a column to store mime information" which will be having list of all the remaining fields in the LOV , you select which field of the table you wish to make for storing mime-type and do not set any default mime-type in the text "or type in fixed mime type" in this case.
    more explaination:
    =================
    for this case create a table like this :
    create table for_blob(id number(4),file_name blob,mime_type_of_file varchar2(400));
    when you select file_name field while designing the form you will have following option.
    "Select a column to store mime information" ---> select mime_type_of_file
    "or type in fixed mime type" ---> delete the content of this text field.
    Now when you will actually run the form you have to insert mime-types in the text "mime_type_of_file " for eg
    for PDF files: Application/pdf
    for msword :Application/msword
    for the first case just input the mime-type which you wish to upload.
    "or type in fixed mime type" ---> delete the content of this text field say for eg for PDF files:Application/pdf
    so that at run time you do not have to input any mime-type info and in this case even the field need not have the column for the mime-type.
    hope this help.
    rahul

  • Using flash to display images from sql server or file system

    hello,
    what methods and parameters of the urlloader class we have to use to display images in a flash player if possible..
    also movie should update everytime a new image is added to a database or file
    the images can either be in a file system or in a sql database (if possible)
    does flash comes with an object of this type or we have to create it.
    regards,

    i responded to your duplicate message 4 days ago:
    is it possible to insert and retrieve images from sql server using actionscript.
    you'll need server-side script to query your database and you can use the flash urlloader class to call your script.
    also  is it possible to create a flash scrolling gallery based on images  stored in a database and everytime an image is added it is displayed in  the gallery.
    load the data using the urlloader class and  then load the images.  periodically query the database for new images if  there's no direct way for flash to know a new image was added.

  • Store large volume of Image files, what is better ?  File System or Oracle

    I am working on a IM (Image Management) software that need to store and manage over 8.000.000 images.
    I am not sure if I have to use File System to store images or database (blob or clob).
    Until now I only used File System.
    Could someone that already have any experience with store large volume of images tell me what is the advantages and disadvantages to use File System or to use Oracle Database ?
    My initial database will have 8.000.000 images and it will grow 3.000.000 at year.
    Each image will have sizes between 200 KB and 8 MB, but the mean is 300 KB.
    I am using Oracle 10g I. I read in others forums about postgresql and firebird, that isn't good store images on database because always database crashes.
    I need to know if with Oracle is the same and why. Can I trust in Oracle for this large service ? There are tips to store files on database ?
    Thank's for help.
    Best Regards,
    Eduardo
    Brazil.

    1) Assuming I'm doing my math correctly, you're talking about an initial load of 2.4 TB of images with roughly 0.9 TB added per year, right? That sort of data volume certainly isn't going to cause Oracle to crash, but it does put you into the realm of a rather large database, so you have to be rather careful with the architecture.
    2) CLOBs store Character Large OBjects, so you would not use a CLOB to store binary data. You can use a BLOB. And that may be fine if you just want the database to be a bit-bucket for images. Given the volume of images you are going to have, though, I'm going to wager that you'll want the database to be a bit more sophisticated about how the images are handled, so you probably want to use [Oracle interMedia|http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14302/ch_intr.htm#IMURG1000] and store the data in OrdImage columns which provides a number of interfaces to better manage the data.
    3) Storing the data in a database would generally strike me as preferrable if only because of the recoverability implications. If you store data on a file system, you are inevitably going to have cases where an application writes a file and the transaction to insert the row into the database fails or a the transaction to delete a row from the database succeeds before the file is deleted, which can make things inconsistent (images with nothing in the database and database rows with no corresponding images). If something fails, you also can't restore the file system and the database to the same point in time.
    4) Given the volume of data you're dealing with, you may want to look closely at moving to 11g. There are substantial benefits to storing large objects in 11g with Advanced Compression (allowing you to compress the data in LOBs automatically and to automatically de-dupe data if you have similar images). SecureFile LOBs can also be used to substantially reduce the amount of REDO that gets generated when inserting data into a LOB column.
    Justin

  • Fileaccess.HttpUploadBean not uploading file in DataBase Table

    Hi,
    I am using fileaccess.HttpUploadBean to upload the txt file in the specified database table.i have followed all the guidelines given in Oracle JSP Tag Libraries and Utilities Reference Guide. But i am not be able to upload the file into Database Table
    I have created a table
    CREATE TABLE FLK_CLOB_TEST (
    FILE_ID NUMBER (5),
    FILE_DATA CLOB,
    FILE_NAME VARCHAR2 (50),
    FILE_PREFIX VARCHAR2 (50) ) ;
    uploadfile.jsp
    <html><body>
    <form name = "formname" action="beanUploadDataBase.jsp" method=POST ENCTYPE="multipart/form-data" />
    <br>MailID: <INPUT TYPE="text" NAME="strMailId" />
    <br> File to upload: <INPUT TYPE="FILE" NAME="File" SIZE="50" MAXLENGTH="120" >
    <br><INPUT TYPE="Submit" NAME="Submit" VALUE="Send" >
    <INPUT type="reset" name="reset" value = "Cancel">
    </form>
    </body></html>
    beanUploadDataBase.jsp , which is having upload code.
    <%@ page contentType="text/html;charset=windows-1252"%>
    <%@ page language="java"
    import="java.util.*,java.io.*,java.sql.*, oracle.jsp.webutil.fileaccess.*" %>
    <html><body>
    <Form name="upForm" method ="post" > <!--action ="beanUploadExample.jsp" >-->
    <%
    Connection conn;
    FlkOracleDBCon objDBHelper;
    objDBHelper = FlkOracleDBCon.getInstance();
    String userdir = "test";
    String strFlag = "";
    String strFileName ="";
    String strDirName ="";
    String strAbsoluteName ="";
    //MultipartRequest multi = null;
    String _PageMode = "";//"CREATE";
    %>
    <jsp:useBean id="upbean"
    class="oracle.jsp.webutil.fileaccess.HttpUploadBean" >
    <jsp:setProperty name="upbean" property="destination" value="<%=userdir%>"/>
    </jsp:useBean>
    <%
    try{
    conn = objDBHelper.getConnection();
    out.println("Connection Value is :"+conn);
    if (conn !=null)
    // upbean.setDestination("test");
    upbean.setDestinationType("database");
    upbean.setConnection(conn);
    upbean.setOverwrite(false);
    upbean.setFileType("character");
    upbean.setTable("FLK_CLOB_TEST");
    upbean.setPrefixColumn("File_Prefix");
    upbean.setFileNameColumn("File_Name");
    upbean.setDataColumn("File_Data");
    //upbean.setBaseDir(application, request);
    String str = upbean.getDestination();
    out.println("The value of Destination is "+str) ;
    upbean.upload(request);
    String filename = upbean.getFileNameColumn();
    String strTable = upbean.getTable();
    String strPrefix = upbean.getPrefixColumn();
    String name = "";
    conn.commit();
    out.println("filename-----:::::: "+filename+":::");
    out.println("File Prefix-----:::::: "+strPrefix+":::");
    out.println("DataBase Table Name-----:::::: "+strTable+":::");
    Enumeration fileNames = upbean.getFileNames();
    while (fileNames.hasMoreElements()) {
    strFlag = "true";
    strFileName = (String)fileNames.nextElement();
    out.println("strFileName File Name Is:::::"+strFileName);
    strAbsoluteName = strFileName.substring(4,strFileName.length());
    catch(IOException ex)
    out.println("IOException is =="+ex.toString());
    catch(SQLException ex)
    out.println("IOException is =="+ex.toString());
    catch(Exception ex)
    out.println("IOException is =="+ex.toString());
    %>
    This is not uploading file or any other information into database table called FLK_CLOB_TEST.
    Please help me on this.

    I get the same error when i try to load the same data but from Oracle Table
    11872     12108     RUN-050406     11/14/2011 4:38:44 PM     Data flow <DF_TB_Generalità> received a bad system message. Message text from the child process is
    11872     12108     RUN-050406     11/14/2011 4:38:44 PM     
    <￀ ==========================================================
    when i load data from SAP extractors or SAP tables i don't have problem.
    Regards
    Bilal

  • SAPDB in status STOPPED INCORRECTLY due to file system failure

    Hi community,
    we have a problem with our SAPDB server.
    The file system on which the whole database is installed disappeared form the list of filesystem mounted because of hardware problems,  the database instances crashed. Now the problem should be technically solved, the filesystem is mounted again and files should be not corrupted
    The first problem was to start the x server, If I tried to start it replied with the following error:
    en950_GetProgramExecPath failed:
    OS_ERROR  0: No system errortext for ERRNO 0
    RTE_ERROR 1: Open Registry:No such file or directoryIndepPrograms
    I resolved the problem looking at the file in directory /var/spool/sql/ini and changing the extensions of two files:
    SAP_DBTech.ini from Registry_dcom.ini.cnt01
    SAP_DBTech.ini from SAP_DBTech.ini.cnt01
    Now the x server starts correctly, but the state of the 2 SAPDB instances appears as STOPPED INCORRECTLY
    My questions:
    - Why the configuration files had that (wrong) extension ?
    - What is the correct procedure to try to start the instances in this case?
    Regards, Valerio

    > The file system on which the whole database is installed disappeared form the list of filesystem mounted because of hardware problems,  the database instances crashed. Now the problem should be technically solved, the filesystem is mounted again and files should be not corrupted
    SHOULD is the keyword of the last sentence!
    > The first problem was to start the x server, If I tried to start it replied with the following error:
    >
    >
    en950_GetProgramExecPath failed:
    > OS_ERROR  0: No system errortext for ERRNO 0
    > RTE_ERROR 1: Open Registry:No such file or directoryIndepPrograms
    >
    > I resolved the problem looking at the file in directory /var/spool/sql/ini and changing the extensions of two files:
    >
    > SAP_DBTech.ini from Registry_dcom.ini.cnt01
    > SAP_DBTech.ini from SAP_DBTech.ini.cnt01
    Hmm... one thing is for sure: the MaxDB software does not rename these files!
    > Now the x server starts correctly, but the state of the 2 SAPDB instances appears as STOPPED INCORRECTLY
    Did you had a look into the KNLDIAG files?
    > My questions:
    > - Why the configuration files had that (wrong) extension ?
    No idea? Storage/Filesystem issue?
    Bad user?
    > - What is the correct procedure to try to start the instances in this case?
    Depending on how much is broken here... reinstall the software from scratch and either re-register the instances or perform a restore and recovery of them.
    regards,
    Lars

  • Oracle file system

    Hi,
    I want to know about file system in oracle 10g.
    Please advice me which one is better among OMF and manually.
    Regards,
    Mark,

    OMF is not a file system but its a way to manage the oracle db's files in a more better way. This is the base of the ASM in 10g which has got a file system to manage not just database files but also the non-db files also in 11g using the ACFS. If you are on 9i, you are limited to OMF only but if you are on 10g, its ASM that you should be using to get a lot of benefits than just getting the files getting created and managed by oracle .
    HTH
    Aman....

  • How can we upload file into to OCS Content repository when we are in Apex

    We have installed the Oracle Application Express 2.2.1 into the OCS 10.1.2 database.
    The Apex authentication is set to operate with OCS SSO.
    We have made a form. There is a browse button on the form. We would like if the uploaded file appeared in the OCS content database repository as
    opposed to Apex document repository.
    To put it into another word, how can we upload the file into to OCS Content repository when we are in Apex.
    Generally speaking, how can we reach content from Apex?
    We have found many java based examples to use content sdk, but how can we use them with Apex? We believe that
    content hasn't got plsql interface.
    i would highly appreciate it if you sent me a full example program.

    Hi Ram,
    Thanks for the reply
    We have a requirement to device a solution to upload the policy documents related to iProcurement
    I am planning to create an OA page to upload the content and planning to use the AOL function security to restrict the users those who can access this page .
    Is there any better way to implement the security?
    Is this approach feasible or is there any better way to approach this requirement?
    Thanks

  • RAW DEVICE와 FILE SYSTEM 간에 오라클 데이터화일 이동하기

    제품 : ORACLE SERVER
    작성날짜 : 1999-11-30
    RAW DEVICE와 FILE SYSTEM 간에 오라클 데이터화일 이동하기
    ======================================================
    유닉스 명령이 dd를 이용하여 오라클 데이터화일을 Unix File System과 Raw
    Device 간에 이동할 수 있으나, 플랫폼 별 Raw Device의 특성으로 인하여 주의할
    점이 있다. 만일 잘못된 이동으로 인하여 데이터베이스가 기동하지 못하면,
    ORA-7366 (sfifi: invalid file, file does not have valid header block.)
    에러가 발생할 수 있다.
    예를 들어 Digital unix의 경우는 raw device에 64k OS 헤더가 필요하므로 dd
    명령어 옵션 중 iseek와 oseek를 활용하여야 한다.
    다음은 예제를 통하여 데이터화일을 Raw Device에서 Unix File System으로
    이동하는 절차이다.
    (운영 현황)
    - 현재의 위치: /dev/rdsk/c0t15d0s7
    - 이동할 위치: /oracle/file/system.dbf
    - 화일의 크기: 488636416 bytes <--- V$DATAFILE.BYTES column 값!
    - DB_BLOCK_SIZE: 2048 bytes
    (준비 단계)
    1. Oracle 블럭 수 계산:
    BYTES / DB_BLOCK_SIZE = 488636416 / 2048 = 238592 (블럭)
    2. O/S file header 블럭 추가:
    238592 + 1 = 238593 (블럭)
    : "ls -l /oracle/file/system.dbf" 명령으로 확인 가능하며, O/S file
    header는 1블럭으로 항상 일정함.
    3. Raw Device OS header 블럭 계산:
    64K / DB_BLOCK_SIZE = 65536 / 2048 = 32 (블럭)
    : 사용할 dd 명령어 중 블럭의 크기를 DB_BLOCK_SIZE(2048바이트)로 할
    예정이므로 2048로 나누어야 함.
    (명령어 형식)
    $ dd if=<raw device> of=<UFS file> bs=<oracle blocksize>
    iseek=<blocks to skip> count=<total count>
    (명령어 수행 절차)
    (1) SVRMGR> STARTUP MOUNT
    (2) SVRMGR> !dd if=/dev/rdsk/c0t15d0s7 of=/oracle/file/system.dbf
    bs=2048 iseek=32 count=238593
    (3) SVRMGR> ALTER DATABASE RENAME FILE '/dev/rdsk/c0t15d0s7' TO
    '/oracle/file/system.dbf';
    (4) SVRMGR> ALTER DATABASE OPEN;
    ========================================================================
    반대로 Unix File System에서 Raw Device로 이동하는 명령어 형식은 아래와 같다.
    (명령어 형식)
    $ dd if=<UFS file> of=<raw device> bs=<oracle blocksize> \
    oseek=<blocks to skip> count=<total count>
    유사한 방식으로 데이타 화일 뿐 아니라 리두 로그 화일도 이동할 수 있다.
    [주의] Raw Device의 블럭 헤더의 크기는 OS마다 다를 수 있으므로 플랫폼
    벤더사에 미리 확인한 후 작업하여야 한다.

  • IS RAW DEVICES SUPPORTED OVER A CLUSTER FILE SYSTEM

    Can raw partions be defined for datafiles after having choosen Cluster file system as storage option for database while creating fresh database using
    DBCA?

    > Do update on how the partitions have to be defined in either cases?
    For both ASM and OCFS, a partition must exist on the disk - it can be of any partition type. Does not matter. Simply that the s/w references a partition and not an entire disk.
    So for example, /dev/sdaf and dev/sdag are two shared devices on the cluster (LUNs on the SAN or whatever).
    You create a partition on each. E.g
    # fdisk -l /dev/sdaf
    Disk /dev/sdaf: 36.5 GB, 36573020160 bytes
    255 heads, 63 sectors/track, 4446 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Device Boot Start End Blocks Id System
    /dev/sdaf1 1 4446 35712463+ 83 LinuxTo use the first device as a OCFS device, you need to build an ocfs file system on it using mkfs.
    And then it can be mounted as a "normal" cooked file system mount. Remember that /etc/fstab needs to be updated for mounting it on startup.
    To use the second device for ASM, you have two choices. If you have the ASMlib kernel module installed, you can use that to configure a volume label and assign it for use by ASM.
    Alternatively, you simply map the device (partition) to a raw device for detection by ASM. E.g.
    # raw /dev/raw/raw1 /dev/sdag1Of course, you also need to make this permanent by updating the raw device list config file so that this mapping is performed on reboot. On Linux, this is the /etc/sysconfig/rawdevices file. Also remember that the user and group access for the logical raw device created, must allow ASM full access to it (e.g. use chmod oracle.dba /dev/raw/raw1).
    In a nutshell, this is how to raw devices are used as ocfs and asm volumes. (on RHEL specifically, but I expect no major differences in this approach on other o/s's)

  • Upload to file system

    Hi everyone,
    I need to upload a file to the server file system. Is there a way to do it, without inserting the document to the database and retrieve it again ?
    Best regards,
    Othman.

    I looked at the source code and I have one question.
    Does this mean you have to insert the txt file to a table and then read it from there
    to store it to a system file?
    This can not be done by just sending the information to a system file.
    Thanks
    Howard

  • How to upload files residing in a folder on local file system .

    Hi, I have a problem when trying to upload files.
    I have a folder in my local system and have n files in it. Now if i use the file upload element i need to click n times to upload these files. So i want to achieve programatically to upload all the files in a folder given the folder name to the application. Is this possible or is there any restriction to achieve this through webdynpro.
    Also how to know programatically all the names of files and folders in a particular folder during web dynpro session.
    Regards,
    Vinay.

    Hi Vinayaka,
    Watch these links..
    Uploading multiple files using the FileUpload UI element
    Files...
    Regards,
    Karthick K Eswaran
    Display files in web browser

  • How to insert a JPG file from file system to Oracle 10g?

    I have developed a schema to store photos as BLOB which store the text description as CLOB original filename, file size.
    I also use ctxsys.context to index TEXT_DESCRIPTION in order to perform Oracle Text Search and it works.
    I would like to insert some JPG file from say C:\MYPHOTO\Photo1.jpg as a new record. How can I do this in SQL PLus and/or Loader?
    How can I retrieve the PHOTO_IMAGE back to the file system using SQL Plus and/or command line in DOS?
    See the following script:
    create user myphoto identified by myphoto;
    grant connect, resource, ctxapp to myphoto;
    connect myphoto/myphoto@orcl;
    PROMPT Creating Table PHOTOS
    CREATE TABLE PHOTOS
    (PHOTO_ID VARCHAR2(15) NOT NULL,
    PHOTO_IMAGE BLOB,
    TEXT_DESCRIPTION CLOB,
    FILENAME VARCHAR2(50),
    FILE_SIZE NUMBER NOT NULL,
    CONSTRAINT PK_PHOTOS PRIMARY KEY (PHOTO_ID)
    create index idx_photos_text_desc on
    PHOTOS(TEXT_DESCRIPTION) indextype is ctxsys.context;
    INSERT INTO PHOTOS VALUES
    ('P00000000000001', empty_blob(), empty_clob(),
    'SCGP1.JPG',100);
    INSERT INTO PHOTOS VALUES
    ('P00000000000002', empty_blob(), 'Cold Play with me at the concert in Melbourne 2005',
    'COLDPLAY1.JPG',200);
    INSERT INTO PHOTOS VALUES
    ('P00000000000003', empty_blob(), 'My parents in Melbourne 2001',
    'COLDPLAY1.JPG',200);
    EXEC CTX_DDL.SYNC_INDEX('idx_photos_text_desc');
    SELECT PHOTO_ID ,TEXT_DESCRIPTION
    FROM PHOTOS;
    SELECT score(1),PHOTO_ID ,TEXT_DESCRIPTION
    FROM PHOTOS
    WHERE CONTAINS(TEXT_DESCRIPTION,'parents',1)> 0
    ORDER BY score(1) DESC;
    SELECT score(1),PHOTO_ID ,TEXT_DESCRIPTION
    FROM PHOTOS
    WHERE CONTAINS(TEXT_DESCRIPTION,'cold play',1)> 0
    ORDER BY score(1) DESC;
    SELECT score(1),score(2), PHOTO_ID ,TEXT_DESCRIPTION
    FROM photos
    WHERE CONTAINS(TEXT_DESCRIPTION,'Melbourne',1)> 0
    AND CONTAINS(TEXT_DESCRIPTION,'2005',2)> 0
    ORDER BY score(1) DESC;

    Hi
    You can use the following to insert an image:
    create table imagetab(id number primary key,imagfile blob, fcol varchar2(10));
    create or replace directory imagefiles as 'c:\'
    declare
        v_bfile BFILE;
        v_blob  BLOB;
      begin
        insert into imagetab (id,imagfile,fcol)
        values (3,empty_blob(),'BINARY')
        return imagfile into v_blob;
        v_bfile := BFILENAME ('IMAGEFILES', 'MyImage.JPG');
        Dbms_Lob.fileopen (v_bfile, Dbms_Lob.File_Readonly);
        Dbms_Lob.Loadfromfile (v_blob, v_bfile, Dbms_Lob.Getlength(v_bfile));
        Dbms_Lob.Fileclose(v_bfile);
        commit;
      end;
    /

  • Uploaded Files stored in Oracle 10G database or in Unix File system

    Hey All,
    I am trying to understand best practices on storing uploaded files. Should you store within the database itself (this is the current method we are using by leveraging BLOB storage) or use a BFILE locator to use the files system storage (we have our DB's on UNIX) . . .or is there another method I should be entertaining? I have read arguments on both sides of this question. I wanted to see what answers forum readers could provide!! I understand there are quite a few factors but the situation I am in is as follows:
    1) Storing text and pdf documents.
    2) File sizes range from a few Kb to up to 15MB in size
    3) uploaded files can be deleted and updated / replaced quite frequently
    Right now we have an Oracle stored procedure that is uploading the files binary data into a BLOB column on our table. We have no real "performance" problems with this method but are entertaining the idea of using the UNIX file system for storage instead of the database.
    Thanks for the insight!!
    Anthony Roeder

    Anthony,
    First word you must learn here in this forum is RESPECT.
    If you require any further explanation, just say so.
    BLOB compared with BFILE
    Security:
    BFILEs are inherently insecure, as insecure as your operating system (OS).
    Features:
    BFILEs are not writable from typical database APIs whereas BLOBs are.
    One of the most important features is that BLOBs can participate in transactions and are recoverable. Not so for BFILEs.
    Performance:
    Roughly the same.
    Upping the size of your buffer cache can make a BIG improvement in BLOB performance.
    BLOBs can be configured to exist in Oracle's cache which should make repeated/multiple reads faster.
    Piece wise/non-sequential access of a BLOB is known to be faster than a that of a BFILE.
    Manageability:
    Only the BFILE locator is stored in an Oracle BACKUP. One needs to do a separate backup to save the OS file that the BFILE locator points to. The BLOB data is backed up along with the rest of the database data.
    Storage:
    The amount of table space required to store file data in a BLOB will be larger than that of the file itself due to LOB index which is the reason for better BLOB performance for piece wise random access of the BLOB value.

  • Not able to upload file in DMS(Document Mang. system) using Web dynpro ABAP

    Hi All,
    I am facing a problem while uploading the file into the DMS ( Document Management System ) from Webdnrpo .
    I am using the BAPI - BAPI_DOCUMENT_CREATE2 to create the document .
    CASE - 1
    when i am providing the storage category mention below and no data carrier1
    ls_documentfiles-storagecategory = 'ZHMEL_CS'.  it is not able to upload the document in the DMS system and when i check
    in the debugg mode it giving error as  ""Error while checking in and storing: C:\TEST.TXT "" .
    CASE - 2
    When i am not using the storage category and providing the the data carrier as default
    ls_documentdata-DATACARRIER1 = 'DEFAULT'. It is able to create the document in the DMS but i am not able to read that document .
    I checked with DMS Consultant that DMS is configured for  ZOL ( documenttype) with a storage category  as 'ZHMEL_CS'.
    The code which i have used is below :
    ls_documentdata-documenttype = 'ZOL'.
    ls_documentdata-documentversion = '00'.
    ls_documentdata-documentpart = '000'.
    ls_documentdata-description = 'Test Document'.
    ls_documentdata-laboratory = '001'.
    ls_documentdata-WSAPPLICATION1 = 'TXT'.
    ls_documentdata-DOCFILE1 = 'C:\TEST.TXT'.
    ls_documentdata-SAVEDOCFILE1 = 'C:\TEST.TXT'.
    *ls_documentdata-FILESIZE1 = 000000000000.
    *ls_documentdata-FILESIZE2 = 000000000000.
    ls_documentdata-WSAPPLICATION1 = 'TXT'.
    ls_documentfiles-DOCUMENTTYPE = 'ZOL'.
    ls_documentfiles-DOCUMENTPART = '000'.
    ls_documentfiles-DOCUMENTVERSION = '00'.
    ls_documentfiles-storagecategory = 'ZHMEL_CS'.
    ls_documentfiles-WSAPPLICATION = 'TXT'.
    ls_documentfiles-DOCPATH = 'C:\'.""lv_filename.
    ls_documentfiles-DOCFILE = 'TEST.TXT'."lv_filename.
    ls_documentfiles-description = 'Test Document'.
    ls_documentfiles-language = 'EN'.
    ls_documentfiles-CHECKEDIN = 'X'.
    APPEND ls_documentfiles to lt_documentfiles .
    *&----Fill Descriptions
    w_descr-language = 'EN'.
    w_descr-language_iso = 'EN'.
    w_descr-description = 'Test'.
    append w_descr to lt_descr.
    clear w_descr.
    **w_hostname = 'HMEL-DV1R3_DR3_00'.
    CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
    EXPORTING
    documentdata = ls_documentdata
    *hostname = 'content-srv'
    *pf_http_dest = 'SAPHTTPA'
    *pf_ftp_dest  = 'SAPFTPA'
    IMPORTING
    DOCUMENTNUMBER = lv_DOCUMENTNUMBER
    return = gv_return
    TABLES
    documentdescriptions       = lt_descr
    documentfiles              = lt_documentfiles.
    Please let me know your valuable inputs on the same ..
    Edited by: Omm Awasthi on Dec 30, 2010 12:22 AM
    Edited by: Omm Awasthi on Dec 30, 2010 12:25 AM

    Hi omm , from functional side your require a document type and content repository
    I have used below code in a function module to create document , we have create object link as PO to the doc.
    FUNCTION ZFM_SR_CREATE_FROM_EXTERNAL .
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(IV_DOCUMENTNUMBER) TYPE  DOKNR OPTIONAL
    *"     VALUE(IV_DOCUMENTTYPE) TYPE  DOKAR OPTIONAL
    *"     VALUE(IV_DOCUMENTVERSION) TYPE  DOKVR OPTIONAL
    *"     VALUE(IV_DOCUMENTPART) TYPE  DOKTL_D OPTIONAL
    *"     VALUE(IV_STORAGE_CAT) TYPE  CV_STORAGE_CAT OPTIONAL
    *"     VALUE(IV_DOKST) TYPE  DOKST OPTIONAL
    *"     VALUE(IT_DM_FILES) TYPE  ZDM_TT_FILES OPTIONAL
    *"     VALUE(IV_EBELN) TYPE  EBELN
    *"  EXPORTING
    *"     VALUE(EV_DOCUMENTNUMBER) TYPE  DOKNR
    *"     VALUE(ES_RETURN) TYPE  BAPIRET2
    V00.00  DD.MM.YYYY                                                   *
    *********************New Method of Uploading File*********************************
      CONSTANTS path_name    TYPE dms_path
               VALUE '/tmp/'.
      CONSTANTS log TYPE dms_path VALUE '/tmp/logFO.txt'.
      DATA: ls_draw TYPE bapi_doc_draw2,
            lt_documentfiles TYPE TABLE OF bapi_doc_files2,
            ls_documentfiles TYPE bapi_doc_files2,
            ls_dm_files TYPE zdm_files,
            lv_filename TYPE string,
            lv_ext TYPE string,
            lv_file_type TYPE draw-dappl,
            lv_file_name TYPE dms_path,
            lv_msg(80) TYPE c,
            lt_objectlinks TYPE TABLE OF bapi_doc_drad,
            ls_objectlinks TYPE bapi_doc_drad,
            lv_ebelp   TYPE ebelp
    Prepare Data
      MOVE iv_documentnumber TO ls_draw-documentnumber.
      MOVE iv_documenttype TO ls_draw-documenttype.
      MOVE iv_documentversion TO ls_draw-documentversion.
      MOVE iv_documentpart TO ls_draw-documentpart.
      ls_draw-statusextern = iv_dokst.
      ls_draw-statusintern = iv_dokst.
      ls_draw-username = sy-uname.
      LOOP AT it_dm_files INTO ls_dm_files.
        SPLIT ls_dm_files-filepath AT '.' INTO lv_filename lv_ext.
        CALL FUNCTION 'CV120_DOC_GET_APPL'
          EXPORTING
            pf_file   = ls_dm_files-filepath
          IMPORTING
            pfx_dappl = lv_file_type.
        TRANSLATE lv_file_type TO UPPER CASE.
        OPEN DATASET log FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
        TRANSFER lv_ext TO log.
        ls_documentfiles-wsapplication = lv_file_type.
        TRANSLATE ls_documentfiles-wsapplication TO UPPER CASE.
        CONCATENATE path_name
                           lv_filename
                            lv_ext
                            INTO lv_file_name.
        CONDENSE lv_file_name  NO-GAPS.
        TRANSFER lv_file_name TO log.
        OPEN DATASET lv_file_name FOR OUTPUT IN BINARY MODE MESSAGE lv_msg.
    *Transfer Attachment Content to Application Server
        TRANSFER ls_dm_files-content TO lv_file_name.
        CLOSE DATASET lv_file_name.
        TRANSFER 'move data to lt_files' TO log.
        ls_documentfiles-storagecategory = iv_storage_cat.
        ls_documentfiles-docfile = lv_file_name.
        ls_documentfiles-DOCUMENTVERSION = IV_DOCUMENTVERSION.
        APPEND ls_documentfiles TO lt_documentfiles.
        CLEAR lv_file_name.
        CLOSE DATASET log.
      ENDLOOP.
      IF iv_ebeln IS NOT INITIAL.
        ls_objectlinks-objecttype = 'EKPO'.
        SELECT SINGLE ebelp INTO lv_ebelp FROM ekpo WHERE
                                          ebeln = iv_ebeln
                                          AND loekz eq space.
        CONCATENATE iv_ebeln lv_ebelp INTO ls_objectlinks-objectkey.
        APPEND ls_objectlinks TO lt_objectlinks.
      ENDIF.
    CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
       EXPORTING
         documentdata   = ls_draw
         pf_ftp_dest    = 'SAPFTPA'
         pf_http_dest   = 'SAPHTTPA'
       IMPORTING
         documentnumber = ev_documentnumber
         return         = es_return
       TABLES
         objectlinks          = lt_objectlinks
         documentfiles  = lt_documentfiles.
    DATA:   ls_doc_data  type bapi_doc_draw2,
       ls_doc_datax type bapi_doc_drawx2,
       ls_return type bapiret2.
    Set value for document data
      ls_doc_data-statusextern  = 'IW'.
      ls_doc_data-statusintern  = 'IW'.
    Set value for document data check
    ls_doc_datax-statusextern = 'X'.
    ls_doc_datax-statusintern = 'X'.
    CALL FUNCTION 'BAPI_DOCUMENT_CHANGE2'
      EXPORTING
        DOCUMENTTYPE               = 'ROS'
        DOCUMENTNUMBER             = IV_DOCUMENTNUMBER
        DOCUMENTPART               = IV_DOCUMENTPART
        DOCUMENTVERSION            = IV_DOCUMENTVERSION
        DOCUMENTDATA               = ls_doc_data
        DOCUMENTDATAX              = ls_doc_datax
      HOSTNAME                   =
      DOCBOMCHANGENUMBER         =
      DOCBOMVALIDFROM            =
      DOCBOMREVISIONLEVEL        =
      SENDCOMPLETEBOM            = ' '
          pf_ftp_dest    = 'SAPFTPA'
          pf_http_dest   = 'SAPHTTPA'
      CAD_MODE                   = ' '
      ACCEPT_EMPTY_BOM           = ' '
    IMPORTING
       RETURN                     =  ls_return
    TABLES
      CHARACTERISTICVALUES       =
      CLASSALLOCATIONS           =
      DOCUMENTDESCRIPTIONS       =
      OBJECTLINKS                =
      DOCUMENTSTRUCTURE          =
       DOCUMENTFILES              = lt_documentfiles.
      LONGTEXTS                  =
      COMPONENTS                 =
      move es_return to ES_RETURN.
      IF es_return-type CA 'EA' ."NE 'E' AND es_return-type NE 'A'.
        "do nothing
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
      ENDIF.
      LOOP AT lt_documentfiles INTO ls_documentfiles.
        DELETE DATASET ls_documentfiles-docfile.
      ENDLOOP.
    ENDFUNCTION.

Maybe you are looking for