title: How do I store a Blob from InputStream
body: <p>I am using Jersey and I can upload a file, I can also write dummy blobs to the datastore. but I am stuck at writing the file that I uploaded to the datastore.</p>
  
  <pre><code>@Path("/blob/")
  public class UploadFileService {
  
      @POST
      @Path("/upload/")
      @Consumes(MediaType.MULTIPART_FORM_DATA)
      public Response uploadFile(@FormDataParam("file") InputStream stream, @FormDataParam("file") FormDataContentDisposition disposition) throws IOException {
  
          storeBlob();
  
        return Response.ok().build();
      }
  
      public void storeBlob() throws IOException{
  
  
          // Get a file service
            FileService fileService = FileServiceFactory.getFileService();
  
            // Create a new Blob file with mime-type "text/plain"
            AppEngineFile file = fileService.createNewBlobFile("text/plain");
  
            // Open a channel to write to it
            boolean lock = false;
            FileWriteChannel writeChannel = fileService.openWriteChannel(file, lock);
  
            // Different standard Java ways of writing to the channel
            // are possible. Here we use a PrintWriter:
            PrintWriter out = new PrintWriter(Channels.newWriter(writeChannel, "UTF8"));
            out.println("The woods are lovely dark and deep.");
            out.println("But I have promises to keep.");
  
            // Close without finalizing and save the file path for writing later
            out.close();
            String path = file.getFullPath();
  
            // Write more to the file in a separate request:
            file = new AppEngineFile(path);
  
            // This time lock because we intend to finalize
            lock = true;
            writeChannel = fileService.openWriteChannel(file, lock);
  
            // This time we write to the channel directly
            writeChannel.write(ByteBuffer.wrap
                      ("And miles to go before I sleep.".getBytes()));
  
            // Now finalize
            writeChannel.closeFinally();
  
            // Later, read from the file using the Files API
            lock = false; // Let other people read at the same time
            FileReadChannel readChannel = fileService.openReadChannel(file, false);
  
            // Again, different standard Java ways of reading from the channel.
            BufferedReader reader =
                    new BufferedReader(Channels.newReader(readChannel, "UTF8"));
                 String line = reader.readLine();
            // line = "The woods are lovely dark and deep."
  
            readChannel.close();
  
            // Now read from the file using the Blobstore API
            BlobKey blobKey = fileService.getBlobKey(file);
            BlobstoreService blobStoreService = BlobstoreServiceFactory.getBlobstoreService();
            String segment = new String(blobStoreService.fetchData(blobKey, 30, 40));
      }
  }
  </code></pre>