.CLIENT UPLOAD FILE

This subroutine will upload a file from the Client to the server.


Usage:

      PASS         <status_code>              FIELD            SHARE? Y
      PASS         <source_file>              FIELD            SHARE? N
      PASS         <dest_file>                FIELD            SHARE? N
      PASS         <convert_flag>             FIELD            SHARE? N
      GOSUB    --- .CLIENT UPLOAD FILE
      *        check for errors
      IF       --- .CLIENT UPLOAD FILE        NE

Description:

This subroutine will upload a file from the Client to the server. The first three parameters are required, if any are missing the subroutine will CANCEL. The <convert_flag> is optional.

<status_code> is the code returned to indicate if the transfer was successful (Required). This field must be PASSed with Share "Y" to receive the value. A value of 1 indicates the transfer was not successful and 0 indicates success. If the transfer failed, you can check --- .CLIENT UPLOAD FILE for more information.

<source_file> is the path and file on the user's PC (Required). You can refer to macro names in the source, ie, you can use any of the names you see in the [LocalPaths] section of the Desktop Client preferences, just prefix them with a $ and surround them with parentheses, ie, $(userHome). If you PASS this field with Share "Y", then it will contain the expanded path name after the transfer is complete.

<dest_file> is the path and file name on the Appx server the <source_file> should be transferred to (Required). This must be in a location writeable by user 'appx' (Linux/Unix) or the current user (Windows).

<convert_flag> indicates if any file conversion is required (Optional). If zero or not passed, then no conversion will be done. A value of 1 means convert the file automatically based on the filename extension. A value of 2 means convert the file automatically based on the contents of the file (ie, it won't convert binary files). A value of 3 means do the conversion regardless of file type.

If conversion is requested, this routine will download the file to a temporary location, then copy it to the final location, converting as necessary. The temporary copy will be deleted. The temporary copy is created in the applications 'Tmpdata' folder, same as the working files for a restructure.

The routine considers the following file extensions to be text files:

  • .bas
  • .c
  • .cgi
  • .cpp
  • .h
  • .htm
  • .html
  • .log
  • .nfo
  • .pas
  • .php
  • .sh
  • .tex
  • .txt

If a <convert_flag> of 2 is passed, the routine will read approximately the first 1000 bytes of the file and look for characters in the range ASCII 0 to 9 (0x00 to 0x09), or ASCII 14 to 31 (0x0e to 0x1f). If any are found, the file is assumed to be binary and no conversion will take place.

If the file is determined to be a text file (either by extension or the lack of binary characters), the routine looks for the presense of a CR/LF pair in the first ~1000 characters of the source file to determine if it's in Unix or Windows format and then uses the following matrix to decide if the file really needs to be converted:

Host      Client      Source
OS        OS          File Type       Conversion
--------  ----------  --------------  -------------------------
UNIX      UNIX        UNIX            No conversion needed.
UNIX      UNIX        WINDOWS         CR/LF to LF
UNIX      WINDOWS     UNIX            LF to CR/LF
UNIX      WINDOWS     WINDOWS         No conversion needed.
WINDOWS   WINDOWS     WINDOWS         No conversion needed.
WINDOWS   WINDOWS     UNIX            LF to CR/LF
WINDOWS   UNIX        WINDOWS         CR/LF to LF
WINDOWS   UNIX        UNIX            No conversion needed.

Comments:

Read what other users have said about this page or add your own comments.


-- JeanNeron - 2012-02-02

Edit | Attach | Watch | Print version | History: r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r1 - 2012-02-02 - JeanNeron
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback