return "%s put LOCAL_FILE VDRIVE_FILE" % (os.path.basename(sys.argv[0]),)
longdesc = """Put a file into the virtual drive (copying the file's
- contents from the local filesystem). If LOCAL_FILE is omitted or '-', the
- contents of the file will be read from stdin."""
+ contents from the local filesystem). LOCAL_FILE is required to be a
+ local file (it can't be stdin)."""
class RmOptions(VDriveOptions):
def parseArgs(self, vdrive_pathname):
if vdrive_fname:
url += vdrive_fname
- if local_fname is None or local_fname == "-":
- infileobj = sys.stdin
- else:
- infileobj = open(local_fname, "rb")
+ infileobj = open(local_fname, "rb")
+ infileobj.seek(0, 2)
+ infilelen = infileobj.tell()
+ infileobj.seek(0, 0)
so = socket.socket()
so.connect((host, port,))
CHUNKSIZE=2**16
- data = "PUT %s HTTP/1.1\r\nConnection: close\r\nHostname: %s\r\n\r\n" % (url, host,)
+ data = "PUT %s HTTP/1.1\r\nConnection: close\r\nContent-Length: %s\r\nHostname: %s\r\n\r\n" % (url, infilelen, host,)
while data:
try:
sent = so.send(data)