- From: イアンフェッティ <ifette@google.com>
- Date: Wed, 2 Jun 2010 08:17:39 -0700
- To: Cristiano Sumariva <sumariva@gmail.com>
- Cc: public-webapps@w3.org
- Message-ID: <AANLkTikOVkUreVByGdvRdYcmS3e-1rlJeZe4K9lF3uUK@mail.gmail.com>
http://www.w3.org/TR/file-writer-api/ On Tue, Jun 1, 2010 at 8:18 AM, Cristiano Sumariva <sumariva@gmail.com>wrote: > I have been reading the specification on file section. > I would like to ask why not propose that File interface allow a create > method to let user save data for his use? > > Resume: > > Interface File extends Blob > { > attribute unsigned long long currentPosition; > readonly attribute signed long long deviceSpaceLeft; > readonly attribute unsigned short machineEndian; > const unsigned short BIG_ENDIAN = 1; > const unsigned short LITTLE_ENDIAN = 0; > const unsigned short UNKNOW_SIZE = -1; > File create( ); > File createBynary(); > signed long write( in DOMString text, optional in unsigned long long > position, optional DOMString fromCharset ) > signed long writeBinary( in DOMString blob, optional in unsgined long > long position ) > } > > An web application in this way could for example create a list of computed > values and allow the user to save the contents to a file without need send > data for the server to pack contents and issue a file download request to > client. > Or implement an image editor in javascript code using the new canvas > element and allow read, create, store to be done without server assistance. > Work on offline mode too. > > About security on file creation: > When the web application request this operation File.create() the browser > could launch a confirm( save file) dialog so the user only could grant the > rights for a file creation. > This dialog( modal? ) would manage file overwrite and more stuff related to > file access( user may write at selected folder ) so that returned file > reference could be overwritten by client script without trouble. > The return type for that function could be string or a File object. > An empty name value or Exception signal that user denied the request. > > If there is concerns about absolute file paths been exposed to javascript > code > then the File.create method could return a boolean status indicating that > the object is ready to write( true ) and no file paths would be exposed at > all. Or only the basename of file without path information. > > For differences between binary and text modes a second method call could > signal File object that the new file should be used on binary mode: > File.createBinary() - same behavior like File.create above but in binary > mode. > > The file object could have some read only properties for device space > control: > For example: > readonly File.deviceSpaceLeft - so when script is making write calls to > file if would know in advance if space still available for writing. Or > application could launch a warn that no space left to save data. If the > implementer do not know how to tell the space left then a File.UNKNOWSIZE > value should be returned. > > double File.currentPosition - traditional File pointer to know where in the > file the client is writing to. Since size is readonly changing this property > move the current position in file cursor. Negative values are invalid and > ignored. A positive value greater then current value increase the file size > to the new size( doing this at begin could be a way to reserve space needed > on disk at once since the file would grow to this current size, and help > filesystem reduce fragmentation ). Changing this attribute on a file opened > for read does nothing and is ignored. The size atrribute should reflect the > new size confirming that file size increased. > > May cause UI hangs on large move requests. > User agents may show on the create dialog a max file size allowed to be > created making impossible to script consume all space left on device. > > readonly boolean File.machineEndian - binary files on target machine could > have data stored in different formats then the script reading would expect. > This flag would tell the script how to pack unpack data to be used on client > machine. > > Cristiano > > >
Received on Wednesday, 2 June 2010 15:18:11 UTC