#----------------------------------------------------------------------- $Length = GetUploadedFileSize($TypeID, $FileID); #----------------------------------------------------------------------- if (!$Length) { return new gException('CANNOT_GET_FILE_SIZE', 'Не удалось получить размер файла'); } #----------------------------------------------------------------------- $Data = GetUploadedFile($TypeID, $FileID); #----------------------------------------------------------------------- $FileName = SPrintF('%s.bin', $FileData['ID']); if ($TypeID == 'EdesksMessages') { $FileName = $FileData['FileName']; } if ($TypeID == 'Profiles') { $FileName = SPrintF('document_%s.%s', $FileData['ID'], $FileData['Format']); } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- Header(SPrintF('Content-Type: %s; charset=utf-8', GetFileMimeType($TypeID, $FileID))); Header(SPrintF('Content-Length: %u', $Length)); Header(SPrintF('Content-Disposition: attachment; filename="%s";', $FileName)); Header('Pragma: nocache'); #----------------------------------------------------------------------- return $Data['Data']; default: return ERROR | @Trigger_Error(101); } default: return ERROR | @Trigger_Error(101); } #-------------------------------------------------------------------------------
function UCloud_MUpload($bucket, $key, $file, $uploadId, $blkSize, $partNumber = 0) { $err = CheckConfig(ActionType::MUPLOAD); if ($err != null) { return array(null, $err); } $f = @fopen($file, "r"); if (!$f) { return array(null, new UCloud_Error(-1, -1, "open {$file} error")); } global $UCLOUD_PROXY_SUFFIX; $etagList = array(); list($mimetype, $err) = GetFileMimeType($file); if ($err) { fclose($f); return array("", $err); } $client = new UCloud_AuthHttpClient(null); for (;;) { $host = $bucket . $UCLOUD_PROXY_SUFFIX; $path = $key . "?uploadId={$uploadId}&partNumber={$partNumber}"; if (@fseek($f, $blkSize * $partNumber, SEEK_SET) < 0) { fclose($f); return array(null, new UCloud_Error(0, -1, "fseek error")); } $content = @fread($f, $blkSize); if ($content == FALSE) { if (feof($f)) { break; } fclose($f); return array(null, new UCloud_Error(0, -1, "read file error")); } $req = new HTTP_Request('PUT', array('host' => $host, 'path' => $path), $content, $bucket, $key); $req->Header['Content-Type'] = $mimetype; $req->Header['Expect'] = ''; list($data, $err) = UCloud_Client_Call($client, $req); if ($err) { fclose($f); return array(null, $err); } $etag = @$data['ETag']; $part = @$data['PartNumber']; if ($part != $partNumber) { fclose($f); return array(null, new UCloud_Error(0, -1, "unmatch partnumber")); } $etagList[] = $etag; $partNumber += 1; } fclose($f); return array($etagList, null); }
$TargetUserID = (int) $Message['TargetUserID']; $TargetGroupID = (int) $Message['TargetGroupID']; #------------------------------------------------------------------------------- $Upload = Upload_Get('TicketMessageFile', $Message['FileName']); #------------------------------------------------------------------------------- switch (ValueOf($Upload)) { case 'error': return ERROR | @Trigger_Error(500); case 'exception': # No more... break; case 'array': #------------------------------------------------------------------------------- $Data = GetUploadedFile('EdesksMessages', $Message['ID']); #------------------------------------------------------------------------------- $EmailAttachments = array(array('Name' => $Upload['Name'], 'Size' => GetUploadedFileSize('EdesksMessages', $Message['ID']), 'Mime' => GetFileMimeType('EdesksMessages', $Message['ID']), 'Data' => Chunk_Split(Base64_Encode($Data['Data'])))); #------------------------------------------------------------------------------- break; #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- default: return ERROR | @Trigger_Error(101); } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- if ($TargetGroupID != 1) { #------------------------------------------------------------------------------- $IsOwner = $Message['UserID'] == ($OwnerID = $Message['OwnerID']); #------------------------------------------------------------------------------- if ($IsOwner) { #-------------------------------------------------------------------------------